2013-09-16 43 views
0

假设我有一个文件copy_pars.txt,我想在最后一行提取第6,7,8个值,如下所示:复制文本文件最后一行的第6个值,粘贴到另一个现有文件

detector xxx xxx xxx xxx XXX XXX XXX xxx xxx

其中XXX值是我想复制的。除第一个“detector”之外的所有值都是未知的浮点数或整数,长度未知。它们被单个空格隔开。

我有第二个文件,在其中paste_pars.txt我要搜索FIRST开头的行“detector”,并更换第6,第7,并与copy_pars.txt的那些行的8号值。

我更喜欢使用sedawk,但欢迎大家提出建议。谢谢。

回答

3

尝试这一行:

awk 'NR==FNR{f6=$6;f7=$7;f8=$8;next}!f&&/^detector/{f=1;$6=f6;$7=f7;$8=f8}7' copy.txt paste.txt 

没有测试,但应您的要求工作。

+0

谢谢@Kent,工作很好,除了不是改变'paste_pars.txt',它直接把整个东西输出到终端。我是新手bash(显然,awk);我怎么能更新'paste_pars.txt'没有任何输出到终端? – brastein

+0

好的,我想我已经回答了我自己的问题。我必须重新写入一个新文件,然后重命名这个新文件覆盖前一个文件:'awk'blah blah'copy_pars.txt paste_pars.txt> paste_pars_new.txt && mv paste_pars_new.txt paste_pars.txt'如果有更好的方法任何人都知道,请通知我! – brastein

0
awk 'NR==FNR{split($0,a);next} !f && /^detector/{for (i=6;i<=8;i++) $i=a[i]; f=1} 1' copy_pars.txt paste_pars.txt 
相关问题