首页 > 解决方案 > AIX 的等效 sed linux 命令

问题描述

我有这种类型的数据:

xxxx aaaaaaaaaaaaaaaaaaa
xxxx bbbbbbbbbbbbbbbbbbb
xxxx ccccccccccccccccccc
xxxx ddddddddddddddddddd
xxxx eeeeeeeeeeeeeeeeeee

我想要这个输出:

xxxx aaaaaaaaaaaaaaaaaaa
'' bbbbbbbbbbbbbbbbbbb
'' ccccccccccccccccccc
'' ddddddddddddddddddd
'' eeeeeeeeeeeeeeeeeee

在linux上我可以这样做:

sed "1 ! s|xxxx|''|" data.txt

但是当我在 AIX 上尝试这个时:

sed: 0602-403 1 ! s|xxx|''| is not a recognized function.

你可以帮帮我吗 ?

标签: linuxsedaix

解决方案


来自POSIX 规范sed(添加了重点):

函数前面可以有一个“!” 字符,在这种情况下,如果地址不选择模式空间,则应应用该功能。<blank>'!' 之前应接受零个或多个字符 特点。未指定<blank>字符是否可以跟随'!' 字符,符合要求的应用程序不得跟随“!” 字符与<blank>字符。

我怀疑你遇到了这个问题。GNUsed允许之间有空格,AIXsed可能不允许。

改为使用sed "1!s|xxxx|''|" data.txt,我敢打赌它会起作用。

不过,我确实认为sed "2,$ s/xxxx/''/" data.txt评论中的建议更清楚。


推荐阅读