好的,所以首先要更详细地解释我遇到的问题。我在这里设置了两个变量;一个复制一列数据,另一个复制多列数据...
问题是我想在多列前面附加第一列数据,同时保持它们对齐
当我将它们单独重定向到 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 .......