我有兩個文件,一個(calc_coord.txt),我需要將x,y,z(字段3,4,5)座標複製到original_coord.txt中。我的問題是我無法保持正確的間距。我需要所有的數字在相同的位置開始(即負號應該是場下每個數字的前面)。複製字段,同時保留空白
(calc_coord.txt):
C 6.0 -9.6300406713 -7.9721184039 0.1185895513
C 6.0 -0.7745844593 0.1157508364 -6.4312181651
O 8.0 -0.7886186832 8.3312194003 5.1214418928
H 1.0 -8.5173944199 -1.0344814844 4.2057188615
H 1.0 -1.3188019701 -1.9268396739 -3.3069629312
H 1.0 -2.6875350807 -9.7931820111 -2.1222787934
H 1.0 -0.9445605850 1.2508093202 1.0754040709
O 8.0 7.0683517839 -0.7860544158 0.0997975722
H 1.0 -0.5981284452 3.1733024008 -9.5005808667
C 6.0 2.0350058476 0.2023241539 -9.0066961578
H 1.0 2.9345243074 -4.1229157611 9.5464726503
H 1.0 6.3575306659 0.4164272327 -9.0466036794
H 1.0 1.7357929841 5.1723014064 9.4397462018
文件我想複製到座標(original_coord.txt):
@<TRIPOS>ATOM 1 C -1.6300406713 -0.9721184039 0.1185895513 C.3 1 LIG1 0.0000 ***** 2 C -0.7745844593 0.1157508364 -0.4312181651 C.3 1 LIG1 0.0000 ***** 3 O -0.7886186832 1.3312194003 0.1214418928 O.3 1 LIG1 0.0000 ***** 4 H -1.5173944199 -1.0344814844 1.2057188615 H 1 LIG1 0.0000 ***** 5 H -1.3188019701 -1.9268396739 -0.3069629312 H 1 LIG1 0.0000 ***** 6 H -2.6875350807 -0.7931820111 -0.1222787934 H 1 LIG1 0.0000 ***** 7 H -0.9445605850 1.2508093202 1.0754040709 H 1 LIG1 0.0000 ***** 8 O 1.0683517839 -0.7860544158 0.0997975722 O.3 1 LIG1 0.0000 ***** 9 H -0.5981284452 0.1733024008 -1.5005808667 H 1 LIG1 0.0000 ***** 10 C 2.0350058476 0.2023241539 -0.0066961578 C.3 1 LIG1 0.0000 ***** 11 H 2.9345243074 -0.1229157611 0.5464726503 H 1 LIG1 0.0000 ***** 12 H 2.3575306659 0.4164272327 -1.0466036794 H 1 LIG1 0.0000 ***** 13 H 1.7357929841 1.1723014064 0.4397462018 H 1 LIG1 0.0000 *****
當我嘗試用awk,我得到的格式的座標爲:
@<TRIPOS>ATOM
1 C -9.6300406713 -7.9721184039 0.1185895513 C.3 1 LIG1 0.0000 *****
2 C -0.7745844593 0.1157508364 -6.4312181651 C.3 1 LIG1 0.0000 *****
3 O -0.7886186832 8.3312194003 5.1214418928 O.3 1 LIG1 0.0000 *****
4 H -8.5173944199 -1.0344814844 4.2057188615 H 1 LIG1 0.0000 *****
5 H -1.3188019701 -1.9268396739 -3.3069629312 H 1 LIG1 0.0000 *****
6 H -2.6875350807 -9.7931820111 -2.1222787934 H 1 LIG1 0.0000 *****
7 H -0.9445605850 1.2508093202 1.0754040709 H 1 LIG1 0.0000 *****
8 O 7.0683517839 -0.7860544158 0.0997975722 O.3 1 LIG1 0.0000 *****
9 H -0.5981284452 3.1733024008 -9.5005808667 H 1 LIG1 0.0000 *****
10 C 2.0350058476 0.2023241539 -9.0066961578 C.3 1 LIG1 0.0000 *****
11 H 2.9345243074 -4.1229157611 9.5464726503 H 1 LIG1 0.0000 *****
12 H 6.3575306659 0.4164272327 -9.0466036794 H 1 LIG1 0.0000 *****
13 H 1.7357929841 5.1723014064 9.4397462018 H 1 LIG1 0.0000 *****
正如你所看到的格式化得到了一點當我嘗試覆蓋字段時搞砸了。無論是否存在「 - 」,它都會從相同位置開始打印所有字段。有什麼建議?我一直在使用它來複制這三個字段。謝謝!
awk '
NR==FNR {v[FNR]=$3; next}
{print substr($0,1,10) sprintf("%-14s", v[FNR]) substr($0,25)}
' calc_coord.txt original_coord.txt >updated_coord.txt
請您詳細說明一下,很難看出您的要求。你到底在拷貝什麼?不期望的間距是多少?因爲它看起來的間隔從第二個文件,這是你的問題的輸入文件..這這些文件是'calc_coord.txt',這是'original_coord.txt'和被'updated_coord.txt'搞砸? – ShellFish
對不起,我試圖更新我的問題,使其更清楚。 – Jkzz
我只需要將original_coord.txt中的字段3,4,5替換爲calc_coord.txt中的字段3,4,5。問題在於格式。我想保持準確的格式在original_coord.txt – Jkzz