我有两个文本文件。我需要复制一个文本文件的 5-6-7 列并将这些列粘贴到另一个文本文件中。例如,文本文件的第一列如下;
文本1:
E GPS41 568026000 0.000000000000000E+00 1.097676240456553E+04 -1.668403004627044E+04 1.770513486005421E+04 2.140299562139315E+00 -5.351523203487980E-01 -1.876979500368582E+00 1.714052588162549E-05 1.390618031795355E-05 8.605165964871206E-06 3.266367837880071E-09 3.392831966908295E-09 1.626218351208862E-09
文本2:
E GPS41 0 5.68026000000000E+08 1.09767623810000E+04 -1.66840300460000E+04 1.77051348440000E+04
我需要复制 text_1 的第 5-6-7 列并将它们粘贴到 text_2 中,如下所示;
新文本:
E GPS41 0 5.68026000000000E+08 1.097676240456553E+04 -1.668403004627044E+04 1.770513486005421E+04
答案1
由于您的数据似乎在字段之间有不一致的空格量,因此awk
处理效果会比更好cut
。因此paste
将两个文件放在一起,然后从复合文件中挑选出所需的字段:
paste text_2 text_1 | awk '{print $1,$2,$3,$4,$12,$13,$14}' > new_text
前任。
$ cat new_text
E GPS41 0 5.68026000000000E+08 1.097676240456553E+04 -1.668403004627044E+04 1.770513486005421E+04
输出与您的输出仅在空格方面有所不同:
$ diff -sb your_new_text new_text
Files your_new_text and new_text are identical
如果您需要保留精确的空格数量,您可以将 awk 更改print
为适当格式的printf
。
您可以使用cut
and来完成此操作paste
,前提是您首先将分隔符压缩为单个空格:
paste -d ' ' <(tr -s ' ' < text_2 | cut -d ' ' -f 1-4) <(tr -s ' ' < text_1 | cut -d ' ' -f 5-7) > new_text