我有一个包含以下行的文件:
HETATM XXXX O ...
HETATM XXXX O ...
HETATM XXXX O ...
HETATM XXXX O ...
HETATM XXXX O ...
HETATM XXXX O ...
其中XXXX
是一个1-5位的数字。
我想在最后三行中在XXXX
和O
之间添加一个空格,以便它们匹配前三个。我可以使用HETATM *[0-9]* O
选择相关部分。如何在[0-9]*
和O
与sed
之间添加额外空格? (注意:我使用的是Mac OS X)
答案 0 :(得分:2)
我会使用tac
反向打印文件,然后awk
在前三行的第二个字段后面加一个空格,然后将其反转:
tac file | awk 'NR<=3 {$2=$2" "}1' | tac
$ cat a
HETATM XXXX O ...
HETATM XXXX O ...
HETATM XXXX O ...
HETATM XXXX O ...
HETATM XXXX O ...
HETATM XXXX O ...
$ tac a | awk 'NR<=3 {$2=$2" "}1' | tac
HETATM XXXX O ...
HETATM XXXX O ...
HETATM XXXX O ...
HETATM XXXX O ...
HETATM XXXX O ...
HETATM XXXX O ...