Linux/Bash:注释与模式匹配的每一行

pdm*_*pdm 5 linux bash sed c

sed至少可以说对我来说是陌生的。我想遍历一个 C 项目树并注释掉调用函数的每一行LogMsg()。可以实现以下目标的东西:

foreach: line within *.c
  if: line contains "LogMsg"
    prepend "//"
Run Code Online (Sandbox Code Playgroud)

或者。另外,我想看看我是否可以实现相反的目标,尽管我认为这可能会更困难。

我觉得这sed是完成这项工作的合适工具,但我不是批处理文本文件编辑方面的专家。有什么帮助吗?

Mar*_*iae 7

要使用的命令是:

 sed '/LogMsg/ s?^?//?' filename  new_filename
Run Code Online (Sandbox Code Playgroud)

它在文件filename 中定位包含LogMsg 的行,并在行的开头 ( ^ )替换双斜杠。问号用作分隔符而不是更常见的斜杠,以防止与要替换的文本混淆。输出被重定向到文件的新版本,而不是标准输出。