我有一个大约200 000行的pdb文本文件。每行看起来是这样的:使用awk和sed在每2-3-4行代替pdb文件
COMPND
SOURCE
HETATM 1 CT 100 1 -23.207 17.632 14.543
HETATM 2 CT 99 1 -22.069 18.353 15.280
HETATM 3 OH 101 1 -21.074 18.762 14.358
HETATM 4 F 103 1 -23.816 18.483 13.675
HETATM 5 F 103 1 -24.119 17.162 15.433
HETATM 6 F 103 1 -22.680 16.591 13.841
HETATM 7 HC 104 1 -21.623 17.681 16.014
HETATM 8 HC 104 1 -22.451 19.218 15.823
HETATM 9 HO 102 1 -21.040 18.108 13.673
HETATM 10 CT 100 2 -4.340 -29.478 45.144
HETATM 11 CT 99 2 -3.051 -29.846 44.395
HETATM 12 OH 101 2 -1.968 -29.072 44.880
HETATM 13 F 103 2 -4.217 -29.778 46.464
HETATM 14 F 103 2 -5.396 -30.156 44.621
HETATM 15 F 103 2 -4.551 -28.140 45.015
HETATM 16 HC 104 2 -3.178 -29.656 43.329
HETATM 17 HC 104 2 -2.829 -30.908 44.511
HETATM 18 HO 102 2 -2.315 -28.222 45.119
HETATM 19 CT 100 3 -49.455 -17.542 -31.718
HETATM 20 CT 99 3 -49.981 -18.984 -31.736
HETATM 21 OH 101 3 -48.905 -19.897 -31.607
HETATM 22 F 103 3 -48.867 -17.273 -30.521
HETATM 23 F 103 3 -50.474 -16.668 -31.929
HETATM 24 F 103 3 -48.527 -17.405 -32.704
...
我必须要改变的C1和第二CT对C2的所有第一CT,与同为F1,F2,F3和HC到H1,H2。
是否可以使用awk和sed在一个小脚本中更改它们?每个C1-C2和F1,F2,F3都是同一分子(三氟乙醇-TFE)的一部分,但有许多TFE分子需要定义。
所以我希望它看起来像这样:
COMPND
SOURCE
HETATM 1 C1 100 1 -23.207 17.632 14.543
HETATM 2 C2 99 1 -22.069 18.353 15.280
HETATM 3 OH 101 1 -21.074 18.762 14.358
HETATM 4 F1 103 1 -23.816 18.483 13.675
HETATM 5 F2 103 1 -24.119 17.162 15.433
HETATM 6 F3 103 1 -22.680 16.591 13.841
HETATM 7 H1 104 1 -21.623 17.681 16.014
HETATM 8 H2 104 1 -22.451 19.218 15.823
HETATM 9 HO 102 1 -21.040 18.108 13.673
HETATM 10 C1 100 2 -4.340 -29.478 45.144
HETATM 11 C2 99 2 -3.051 -29.846 44.395
HETATM 12 OH 101 2 -1.968 -29.072 44.880
HETATM 13 F1 103 2 -4.217 -29.778 46.464
HETATM 14 F2 103 2 -5.396 -30.156 44.621
HETATM 15 F3 103 2 -4.551 -28.140 45.015
HETATM 16 H1 104 2 -3.178 -29.656 43.329
HETATM 17 H2 104 2 -2.829 -30.908 44.511
HETATM 18 HO 102 2 -2.315 -28.222 45.119
HETATM 19 C1 100 3 -49.455 -17.542 -31.718
HETATM 20 C2 99 3 -49.981 -18.984 -31.736
HETATM 21 OH 101 3 -48.905 -19.897 -31.607
HETATM 22 F1 103 3 -48.867 -17.273 -30.521
HETATM 23 F2 103 3 -50.474 -16.668 -31.929
HETATM 24 F3 103 3 -48.527 -17.405 -32.704
...
感谢
谢谢,但仍然存在问题。它停在9999行。有什么事吗? – Grego
'HETATM 9999 HO 102 1111 -24.504 -16.257 -35.613 HETATM10000 CT 100 1112 9.045 23.978 29.038 HETATM10001 CT 99 1112 10.488 24.501 29.083 HETATM10002 OH 101 1112 11.370 23.545 28.522 HETATM10003˚F103 1112 8.650 23.804 27.749 HETATM10004˚F103 1112 8.209 24.855 29.654 HETATM10005 F 103 1112 8.996 22.779 29.679' – Grego
我发现我的问题! 'NF <3 {print;下一个} $ 2!=“CT”&& $ 2!=“F”&& $ 2!=“HC”{print;下一个} {如果(old_col2!= $ 2){计数器= 0} old_col2 = $ 16 $ 2 = SUBSTR($ 2,1,1)++计数器 的printf(“%S%3S%4S%5S%11S% 7s%7s \ n“,$ 1,$ 2,$ 3,$ 4,$ 5,$ 6,$ 7); }' – Grego