代码之家  ›  专栏  ›  技术社区  ›  Clifford

使用sed转换TMS320C55X编译器for Visual Studio的输出

sed
  •  -1
  • Clifford  · 技术社区  · 14 年前

    我正试图让SED转换来自TMS320C55X编译器的输出,以便Visual Studio能够正确解析它(这样,当您单击一个错误/警告时,它会跳到源代码中的位置)。我已经用其他编译器成功地完成了这项工作,但是我并没有经常使用SED来让它无痛,这一次它击败了我。

    编译器输出的格式为:

    "<file>", line <line>: <error|warning> <id>: <text>
    

    例如:

    "ImageBuffer.c", line 21: error #20: identifier "p" is undefined
    

    我需要把它变成:

    <file>(<line>) : <error|warning> <id>: <text>
    

    因此,对于上面的示例:

    ImageBuffer.c(2) : error #20: identifier "p" is undefined
    

    关键是()部分。

    谢谢。

    1 回复  |  直到 12 年前
        1
  •  2
  •   paxdiablo    14 年前

    我可以通过以下方法获得输出:

    c:\src>echo "ImageBuffer.c", line 21: error #20: identifier "p" is undefined
        | sed -e "s/\"//" -e "s/\", line /(/" -e "s/:/) :/"
    ImageBuffer.c(21) : error #20: identifier "p" is undefined
    

    我必须逃离 " 因为我是从 cmd.exe 但是,如果只使用单引号包围 sed 命令。

    个体 塞德 命令:

    • "s/\"//" 从文件名中去掉起始引号。
    • "s/\", line /(/" 从文件名中去掉结束引号,并将文件名和行号之间的文本替换为行号前面的左括号。
    • "s/:/) :/" 删除一些其他不必要的文本后,将右括号放在行号之后。