Sed 我可以使用awk指定在哪个列中放置字符串吗?

Sed 我可以使用awk指定在哪个列中放置字符串吗?,sed,awk,grep,Sed,Awk,Grep,我有一个名为test.txt的选项卡分隔文本文件,其中有多个列,我试图使其与另一个名为output.txt的文件相同 test.txt如下所示 t m sx sy sz rx ry rz 49.07 0 -1.00 0.00 -0.11 20.00 0.00 -2.18 49.47 0 -1.00 0.00 -0.11 22.00 0.00 -2.33 50.89 0 -1.00 0.00

我有一个名为test.txt的选项卡分隔文本文件,其中有多个列,我试图使其与另一个名为output.txt的文件相同

test.txt如下所示

    t   m  sx  sy  sz  rx   ry   rz

49.07   0   -1.00   0.00   -0.11   20.00   0.00   -2.18

49.47   0   -1.00   0.00   -0.11   22.00   0.00   -2.33

50.89   0   -1.00   0.00   -0.11   34.00   0.00   -3.21

.
:

42.06  0    29.00   0.00   -2.86   12.00   0.00   -1.44
问题是,无论我使用哪种类型的分隔符,它仍然不会与所需的输出文件output.txt具有相同的形式

在output.txt中,所有这些列都有一个特定的位置,因此

    t        m     sx      sy        sz      rx       ry     rz
Ln1,col1    Ln1,col9    Ln1,col17    Ln1,col25    Ln1,col33  Ln1,col41  Ln1,col49 Ln1,col57 

我对awk、sed和大多数其他unix命令有点陌生。有什么建议吗?

你试过这样的吗

awk -F 'BEGIN{print "t\tm\tsx\tsy\tsz\trx\try\trz"}{print $1"\t"$9"\t"$17"\t"$25"\t"$33"\t"$41"\t"$49}' test.txt

打印开头的标题,然后为每行打印所需的列例如
printf

awk '{for (i=1;i<=NF;i++) printf(\"%-9s\", $i); print}' file

awk'{for(i=1;iI)为了便于解释,我只放了标题列。原始文件没有标题,只有数字字符。尝试了不带标题的建议并将其导入输出文件,但没有成功:(以最简单的形式,我想这样做:从test.txt中获取第1列并将其导入第1列的output.txt中。然后从test.txt中获取第2列并将其导入output.txt第9列。因此,test.txt中的每一列都应该放在output.txt中的特定位置,该位置由列nu定义。)mber。可能没有任何分隔符,因为输出文件中有空列?您希望测试列在输出文件中的确切位置是什么?设法在每列之间使用一定数量的空格来获得所需的输出。现在我只需要找到对每列使用左对齐的方法。awk“{print$1”“$2”“$3”“$4”“$5”“$6”“$7”“$8}”test.txt>output.txt如果您稍微更改一下代码,我认为awk/GAWK printf可以完成这项工作: