我有一个用例将attribute ::添加到字段name_ [0-9] [0-9]:但是某些字段已经有了属性::, 所以我只需要添加attribtue :: to name_ [0-9] [0-9]:没有后跟属性::
我试过这个:
sed -n 's/name_[0-9][0-9]:(?!attribute::)/&attribute::/p' out
我在网上正则表达式调试器上测试正则表达式应该是我需要的,但实际上如果我给name_01这不匹配:abc
答案 0 :(得分:3)
“在线正则表达式调试器”通常不会告诉您他们测试哪种精确的正则表达式方言;如果他们告诉你,你需要知道你的sed
支持哪种方言。
您正在尝试使用我所知道的任何sed
中不支持的Perl正则表达式功能,但当然,它在Perl中得到了非常好的支持。
perl -ne 's/name_[0-9][0-9]:(?!attribute::)/$&attribute::/ and print' out
答案 1 :(得分:1)
{{1,2,3,},{4,5,6,},}
$ cat file1
name_12:
name_34:attribute::
name_56:
$ sed '/:attribute::/n; s/name_[0-9][0-9]:/&attribute::/g' file1
name_12:attribute::
name_34:attribute::
name_56:attribute::
:阅读下一行。