如何使用sed跳过行?

如何使用sed跳过行?,sed,Sed,我想在文件中全局执行sed替换。但是,我想跳过某些行: -那些在一段时间后会发生替换的地方! -那些包含逗号(,) -包含单词“parameter”(小写或大写)的 如何做到这一点?您的第一个异常实现起来并不简单,但也许您可以将其重新表述为替换的一部分?所以,要用“bar”代替“foo”,除了那些行,我会用 sed '/parameter\|,/!s/^\([^!]*\)foo/\1bar/' (一些sed方言需要更多或更少的反斜杠。) /parameter\|,/将仅选择与此正则表达式不匹配

我想在文件中全局执行sed替换。但是,我想跳过某些行: -那些在一段时间后会发生替换的地方! -那些包含逗号(,) -包含单词“parameter”(小写或大写)的


如何做到这一点?

您的第一个异常实现起来并不简单,但也许您可以将其重新表述为替换的一部分?所以,要用“bar”代替“foo”,除了那些行,我会用

sed '/parameter\|,/!s/^\([^!]*\)foo/\1bar/'
(一些
sed
方言需要更多或更少的反斜杠。)

/parameter\|,/将仅选择与此正则表达式不匹配的行

s/^\([^!]*\)foo/\1bar/
将“foo”替换为“bar”,前提是“foo”不带感叹号。前导文本被捕获到一个反向引用
\1
中,基本上被自身替换


不区分大小写的匹配要求在
sed
-
[Pp][Aa][Rr][Aa][Mm][Ee][Tt][Ee][Rr]
中使用难看的正则表达式。对于任何更复杂的内容,可以切换到Awk或Perl,它们为复杂匹配提供了更好的工具,并提供了更可读的代码。

发布示例输入和输出。它是否必须是
sed
。其他程序可能会做得更好?和-1由于您没有发布您尝试过的内容。为什么
sed
?,您可以在awk中轻松完成此操作。可能会重复