我有两个文本文件。我需要复制一个文本文件的5-6-7列,并将这些列粘贴到另一个文本文件中。例如,文本文件的第一列如下;
text_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-09text_2:
E GPS41 0 5.68026000000000E+08 1.09767623810000E+04 -1.66840300460000E+04 1.77051348440000E+04我需要复制text_1的第5-6-7列,并按如下方式粘贴到text_2;
new_text:
E GPS41 0 5.68026000000000E+08 1.097676240456553E+04 -1.668403004627044E+04 1.770513486005421E+04 发布于 2018-07-02 13:26:48
由于您的数据在字段之间的空白数量似乎不一致,所以awk将比cut更好地处理它。因此,将两个文件放在一起,然后从组合中选择所需的字段:
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和paste完成此操作:
paste -d ' ' <(tr -s ' ' < text_2 | cut -d ' ' -f 1-4) <(tr -s ' ' < text_1 | cut -d ' ' -f 5-7) > new_texthttps://askubuntu.com/questions/1051467
复制相似问题