替代标志中有多个数字或“g”

问题描述 投票:0回答:1

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

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

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

当我使用 BSD sed 时,显示错误:

more than one number or 'g' in substitute flags
macos sed
1个回答
1
投票

这可能对你有用(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 @@

© www.soinside.com 2019 - 2024. All rights reserved.