如何使用sed跳过行?
我想在文件中全局执行sed替换。但是,我想跳过某些行: -那些在一段时间后会发生替换的地方! -那些包含逗号(,) -包含单词“parameter”(小写或大写)的如何使用sed跳过行?,sed,Sed,我想在文件中全局执行sed替换。但是,我想跳过某些行: -那些在一段时间后会发生替换的地方! -那些包含逗号(,) -包含单词“parameter”(小写或大写)的 如何做到这一点?您的第一个异常实现起来并不简单,但也许您可以将其重新表述为替换的一部分?所以,要用“bar”代替“foo”,除了那些行,我会用 sed '/parameter\|,/!s/^\([^!]*\)foo/\1bar/' (一些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中轻松完成此操作。可能会重复