当我在mac OS中使用sed时,我不能使用这样的替换标志:
sed 's/xx/yy/3g' my.txt
这个命令的替代品是什么? 我不能在这里一起使用“3g”。该用例在参考文档中。
我使用BSD sed。它显示错误:
more than one number or 'g' in substitute flags
答案 0 :(得分:0)
这可能适合你(GNU sed):
sed 's/x/\ny/3;h;s/x/y/g;H;g;s/\n.*\n//' file
在要保留的出现后放置一个唯一的标记,将该行复制到保留空间(HS),替换所有出现,然后将这些标记附加到副本并删除两个唯一标记之间的块。
这种方法应该适用于大多数sed。如果您使用的sed无法处理\n
,那么请使用唯一的字符串,例如@@a unique string @@