如何查找文本文件的特定行并对其进行操作?

Cas*_*let 0 bash awk sed

我有几个.c文件,我想找到行printf,对于那些行,我想//在它们之前添加注释掉代码.我可以使用python读取每个文件,进行转换,并将转换后的文本写回来,但它太复杂了.还有其他简单的方法吗?我考虑过sedawk,但我不知道如何编写表达式,或者是否可以使用sed/ 来完成此任务awk.

sat*_*sat 5

sed:

sed '/printf/s~^~//~g' *.c
Run Code Online (Sandbox Code Playgroud)

由@SLePort建议,

sed 's~.*printf~//&~' *.c
Run Code Online (Sandbox Code Playgroud)

使用-i就地编辑.

精确匹配的另一种方法printf(假设printf总是以换行符开始):

sed 's~^\([\t ]*\)\(printf\)~\1//\2~g' file
Run Code Online (Sandbox Code Playgroud)