仅在包含其他关键字

时间:2015-08-14 19:09:49

标签: sed osx-yosemite

我的文件包含以两个可能的关键字ATOMHETATM开头的行。在其中一些行中,有一个第二个关键字HOH出现在其他一些字符之后。在其他行中,还有其他3个字符的关键字XXX,例如SOL,而不是HOH

ATOM  1231  O  XXX ...
HETATM1232  O  SOL ...
HETATM1233  O  HOH ...

我想要的是,只有当HETATM出现在该行上时,才将ATOM更改为HOH

我尝试了以下内容:

sed -E '/\(HETATM\)\(.*HOH\)/s//\1ATOM/' file

,它会出现illegal byte sequence错误。我做错了什么?

1 个答案:

答案 0 :(得分:2)

试试这个:

sed '/HOH/s/HETATM/ATOM/' file

输出:

ATOM  1231  O  XXX ...
HETATM1232  O  SOL ...
ATOM1233  O  HOH ...

仅限包含HOH搜索HETATM并由ATOM替换的行。