仅在包含另一个关键字的行中更改文件中的关键字
Change keyword in a file only in the lines that contain another keyword
我的文件中的行以两个可能的关键字 ATOM
和 HETATM
开头。在其中一些行中,有第二个关键字 HOH
,出现在其他一些字符之后。在其他行中,还有其他 3 个字符的关键字 XXX
,例如 SOL
而不是 HOH
:
ATOM 1231 O XXX ...
HETATM1232 O SOL ...
HETATM1233 O HOH ...
我想做的是仅当 HOH
也出现在行上时才将 HETATM
s 更改为 ATOM
。
我尝试了以下方法:
sed -E '/\(HETATM\)\(.*HOH\)/s//ATOM/' file
给出 illegal byte sequence
错误。我做错了什么?
试试这个:
sed '/HOH/s/HETATM/ATOM/' file
输出:
ATOM 1231 O XXX ...
HETATM1232 O SOL ...
ATOM1233 O HOH ...
仅在包含 HOH
的行中搜索 HETATM
并替换为 ATOM
。
我的文件中的行以两个可能的关键字 ATOM
和 HETATM
开头。在其中一些行中,有第二个关键字 HOH
,出现在其他一些字符之后。在其他行中,还有其他 3 个字符的关键字 XXX
,例如 SOL
而不是 HOH
:
ATOM 1231 O XXX ...
HETATM1232 O SOL ...
HETATM1233 O HOH ...
我想做的是仅当 HOH
也出现在行上时才将 HETATM
s 更改为 ATOM
。
我尝试了以下方法:
sed -E '/\(HETATM\)\(.*HOH\)/s//ATOM/' file
给出 illegal byte sequence
错误。我做错了什么?
试试这个:
sed '/HOH/s/HETATM/ATOM/' file
输出:
ATOM 1231 O XXX ... HETATM1232 O SOL ... ATOM1233 O HOH ...
仅在包含 HOH
的行中搜索 HETATM
并替换为 ATOM
。