使用 sed 从文件开头注释到模式匹配行

使用 sed 从文件开头注释到模式匹配行

我搜索一个模式,说“START OF ARAMBOL”,它在文件中匹配。现在我想注释从第 1 行到当前匹配模式第 1 行的每一行。我必须对 200 多个文件执行此操作。

我也可以使用 perl 来做到这一点,但是有没有好的 sed 方法可以做到这一点。

谢谢

答案1

作为演示这一概念的一句台词:

echo -e 'a\nb\nc\nPATTERN\nd\ne\nf' | sed '0,/PATTERN/ s/^/#/'

你只需要适应你的环境:

  • 至于“模式”
  • 我假设'#'作为注释字符
  • 以及如何将其应用到您的所有文件。如果它们都是“fileXXX.txt”,您可以运行:sed -i '0,/PATTERN/ s/^/#/' file*txt

答案2

您的问题询问sed但包含gvim标签,因此这里是ed/ex答案:

ed file <<EOF
0,/"$pattern"/s/^/"$comment_char"/
wq
EOF

它看起来非常像sed答案是因为sed并且ex源自ed

相关内容