如何在多个文件中注释与gvim中的模式不匹配的行

时间:2017-06-17 03:31:12

标签: vim sed replace

我想评论与多个文件中的模式不匹配的行。 例如,我想在文件g!/my_pattern/s/^/#/中注释所有那些不包含“my_pattern”的行。 我可以在文件A1.sh

中使用A/A1.sh B/B1.sh

但是假设从A到Z有26个目录,如果我的文件存在于每个目录中,如

showAd

我如何一次评论它们?

2 个答案:

答案 0 :(得分:1)

使用GNU sed和bash:

sed -i '/my_pattern/!s/.*/#&/' [A-Z]/*.sh

使用GNU sed和csh:

sed -i '/my_pattern/\!s/.*/#&/' [A-Z]/*.sh

答案 1 :(得分:0)

在命令行中使用for循环和vim命令:

for ch in {A..Z}; do
    gvim -c ':g!/my_pattern/s/^/#/|:exit' "${ch}/${ch}1.sh"
done

sed替代方案:

for ch in {A..Z}; do    
    sed -i 's/^my_patter/#&/' "${ch}/${ch}1.sh"
done