不止一个号码或者' g'在替代标志

时间:2014-09-26 09:35:37

标签: macos sed

当我在mac OS中使用sed时,我不能使用这样的替换标志:

sed 's/xx/yy/3g' my.txt 

这个命令的替代品是什么? 我不能在这里一起使用“3g”。该用例在参考文档中。

我使用BSD sed。它显示错误:

more than one number or 'g' in substitute flags

1 个答案:

答案 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 @@