好的,所以首先要解釋我更詳細的問題。我在這裏設置兩個變量;一個複製一列數據,另一個拷貝數據的多列...使用包含多列數據的變量回顯多個變量; bash
的問題是,我想數據的第一列追加盈方多列,同時保持它們對準
環當我將它們單獨重定向到Cmain時,也做我想要的東西;但我需要做給他們兩個
#copies first column of original car file to format the atom numbers
FC=$(awk '{for (i=6; i<=21 ; i++)
if (NR >= 6 && NR == i)
print $1}' $carf)
#copies and formats the rest of the columns from the .incoor file and sets to variable Col
col=$(awk '{for (j=6; j <= 21 ; j++)
if (NR >= 6 && NR == j)
printf "%13.8f\t%12.8f\t%12.8f%s%s%s%s%4.3f\n", $2, $3, $4,
" XXXX", " 1", " xx"," " $1" ", " 0.000"}' $coor)
這就是事情發生了什麼錯誤
#echos variables and appends to Cmain
echo " $FC $col" >> Cmain
例子;出於某種原因,它需要第二組列並將它們向下移動,並將第一行移動到......就像我說的那樣,當我單獨執行它們時,列對齊,一切都是桃色......除了我錯過了第一列數據
U1
U2
U3
U4
C1
C2
C3
C4
U5
U6
U7
U8
C5
C6
C7
C8 0.00000000 0.00000000 0.00000000 XXXX 1 xx U 0.000
0.00000000 4.43785037 4.86047726 XXXX 1 xx U 0.000
4.86047726 0.00000000 4.86047726 XXXX 1 xx U 0.000
4.86047726 4.43785037 0.00000000 XXXX 1 xx U 0.000
4.86047726 4.43785037 4.86047726 XXXX 1 xx C 0.000
4.86047726 0.00000000 0.00000000 XXXX 1 xx C 0.000
0.00000000 0.00000000 4.86047726 XXXX 1 xx C 0.000
0.00000000 8.87570074 0.00000000 XXXX 1 xx U 0.000
0.00000000 13.31355111 4.86047726 XXXX 1 xx U 0.000
4.86047726 8.87570074 4.86047726 XXXX 1 xx U 0.000
4.86047726 13.31355111 0.00000000 XXXX 1 xx U 0.000
4.86047726 13.31355111 4.86047726 XXXX 1 xx C 0.000
4.86047726 8.87570074 0.00000000 XXXX 1 xx C 0.000
0.00000000 13.31355111 0.00000000 XXXX 1 xx C 0.000
0.00000000 8.87570074 4.86047726 XXXX 1 xx C 0.000
〜
我想是
U1 0.00000000 0.00000 etc
U2 0.00000000 4.43785037 4.86047726 .......
你在尋找'paste'命令嗎? – tripleee 2012-07-31 07:18:55
也許,不確定...我的回聲命令工作不正常...所以我只是需要一些將保持列對齊,而不是如圖所示 – Sloan 2012-07-31 07:24:31
'for'循環顯示了一個明顯的誤解'awk'處理模型。你的代碼被讀取的每一行調用,從上到下;所以當'awk'處理第6行時,在整個腳本中'NR'將等於六,並且當讀取第7行時,整個腳本將再次以該值處理。 – tripleee 2012-07-31 17:12:43