首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两个文本文件之间复制和粘贴列

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

Ask Ubuntu用户
提问于 2018-07-02 11:47:58
回答 1查看 831关注 0票数 1

我有两个文本文件。我需要复制一个文本文件的5-6-7列,并将这些列粘贴到另一个文本文件中。例如,文本文件的第一列如下;

text_1:

代码语言:javascript
复制
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

text_2:

代码语言:javascript
复制
E    GPS41  0  5.68026000000000E+08  1.09767623810000E+04 -1.66840300460000E+04  1.77051348440000E+04

我需要复制text_1的第5-6-7列,并按如下方式粘贴到text_2;

new_text:

代码语言:javascript
复制
E    GPS41  0  5.68026000000000E+08 1.097676240456553E+04 -1.668403004627044E+04 1.770513486005421E+04 
EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2018-07-02 13:26:48

由于您的数据在字段之间的空白数量似乎不一致,所以awk将比cut更好地处理它。因此,将两个文件放在一起,然后从组合中选择所需的字段:

代码语言:javascript
复制
paste text_2 text_1 | awk '{print $1,$2,$3,$4,$12,$13,$14}' > new_text 

例如。

代码语言:javascript
复制
$ cat new_text 
E GPS41 0 5.68026000000000E+08 1.097676240456553E+04 -1.668403004627044E+04 1.770513486005421E+04

输出仅在空格方面与您的输出不同:

代码语言:javascript
复制
$ diff -sb your_new_text new_text 
Files your_new_text and new_text are identical

如果需要保留空白的确切数量,可以将awk print更改为格式适当的printf

如果首先将分隔符压缩到单个空格中,则可以使用cutpaste完成此操作:

代码语言:javascript
复制
paste -d ' ' <(tr -s ' ' < text_2 | cut -d ' ' -f 1-4) <(tr -s ' ' < text_1 | cut -d ' ' -f 5-7) > new_text
票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1051467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档