在两个文本文件之间复制并粘贴列

在两个文本文件之间复制并粘贴列

我有两个文本文件。我需要复制一个文本文件的 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


您可以使用cutand来完成此操作paste,前提是您首先将分隔符压缩为单个空格:

paste -d ' ' <(tr -s ' ' < text_2 | cut -d ' ' -f 1-4) <(tr -s ' ' < text_1 | cut -d ' ' -f 5-7) > new_text

相关内容