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



我想注释与多个文件中的模式不匹配的行。例如,我想注释所有在文件A1.sh中不包含"my_pattern"的行。我可以在文件A1.sh内使用g!/my_pattern/s/^/#/

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

A/A1.sh
B/B1.sh

如何一次性评论它们?

使用 GNU sed 和 bash:

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

使用 GNU sed 和 csh:

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

在命令行中使用 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

最新更新