我有一个包含内容的文件

abc dbw ;\
xxx{ sample test }
bewolf \
bewolf
test


我需要检查

 xxx{ sample test }
 bewolf


并像这样注释掉这些行

/*xxx{ sample test }
bewolf*/


我尝试使用grep,但是grep搜索字符串。由于Dash脚本没有数组,因此使其工作更加艰巨。

我试图获取开始和结束索引,以便可以使用headtail剪切该部分。

欢迎使用sedawk之类的其他任何想法。

更笼统地说,我需要使用Bash脚本在C文件中注释一个宏。

最佳答案

如果多个结尾注释不打扰您,则可以使用一个简单的sed像这样:

sed -e "s%^xxx{ sample test }$%\/\*&\*\/%" -e "s%^bewolf$%\/\*&\*\/%" file.txt

输入:

abc dbw ;\
xxx{ sample test }
bewolf \
bewolf
test


输出:

abc dbw ;\
/*xxx{ sample test }*/
bewolf \
/*bewolf*/
test


如果要直接覆盖-i,请添加file.txt标志。

09-28 11:32