假设我有以下输入:
CH12
CH23au
RCH34
CH99de
ZE33a
CH88aude
CHa我希望输出是这样的:
CH12au
CH23au
RCH34
CH99deau
ZE33a
CH88aude
CHaau根据这样的规则,行必须以'CH‘开头,而不具有'au’的模式。
我怎样才能做到这一点?
我想我得用sed了?或者是沃克?
发布于 2016-04-02 07:38:17
这可能对您有用(GNU sed):
sed '/^CH/{/au/!s/$/au/}' file关注从CH开始的行,如果它们不包含au,就追加它。
发布于 2016-04-02 07:50:22
这里是一个简单的Awk脚本,它在行的开头查找CH而没有au。最后一个1是“打印所有输入行”的常用成语,$0是当前的输入行。
awk '/^CH/ && ! /au/ { $0 = $0 "au" }1' file如果要在外部变量中使用后缀,则需要进行次要的重构。
awk -v suf="au" '/^CH/ && $0 !~ suf { $0 = $0 suf } 1' file发布于 2016-04-02 07:09:27
使用sed:
sed '/au/!s/^CH\(.*\)/CH\1au/' file/au/!:在不包含au的行中s:替代^CH行从CH开始\(.*\)后面跟着任何字符(用\( \)捕获)CH\1au用CH替换匹配模式,后面跟着捕获的字符,然后结束auhttps://stackoverflow.com/questions/36370209
复制相似问题