我正在寻找一种实现以下目标的方法:
某个目录包含4个(配置)文件:
我希望我的bash脚本逐个读取每个文件。在每个文件中,查找以“ params:”开头的特定行。我想注释掉这一行,然后在下一行中输入“ params:根据我的意愿更改”。
我知道有很多方便的工具,例如sed可以帮助完成这些任务。因此,我尝试了一下:
sed -ri 's/params:/^\\\\*' File1.conf
sed -ri '/params:/params: changed according to my will' File1.conf
问题:第一行是否真的params:
跟\\
随着params:
找到的整行的副本替换了正则表达式?我不确定我可以在这里使用*。
好吧,我如何实现对所有4个文件都执行这些命令?
因此,此命令将注释文件中每行开头params:
的内容,并在下一行中添加文本
sed -E -i 's/^(params:.*)$/\/\/\1\nYOUR NEW LINE HERE/g'
该模式^(params:.*)$
将匹配以params:开头的任何整行,并且圆括号表示这是一个捕获组。
然后,它在sed命令的第二部分via中使用\1
,它是找到的第一个捕获组的参考。因此,您可以看到第二部分注释第一行,添加一个换行符,最后是您的文本。
您只需执行以下操作即可对所有文件执行此操作 sed -E -i 's/^(params:.*)$/\/\/\1\nYOUR NEW LINE HERE/g' file1 file2 file3 file4
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句