从一个文件添加一列到多个文件的末尾

时间:2016-04-22 22:56:51

标签: bash awk

我想把一个文件中的一列,即第7列(即母文件)放到许多文件的结尾列(即child1.c,chil2.c child3.c等等)

motherfile

  38 WAT1 1    TIP3 OH2  OT    -0.834000       15.9994           0
  39 WAT1 1    TIP3 H1   HT     0.417000        1.0080           0
  40 WAT1 1    TIP3 H2   HT     0.417000        1.0080           0
  41 WAT1 2    TIP3 OH2  OT    -0.834000       15.9994           0
  42 WAT1 2    TIP3 H1   HT     0.417000        1.0080           0

child1.c

       O        -5.689000       -0.628000      -10.423000
       H        -6.663000       -0.744000      -10.224000
       H        -5.166000       -1.340000       -9.957000
       O        11.405000        3.612000        1.674000
       H        11.331000        4.609000        1.663000

child2.c

       O        -4.689000       -0.628000      -10.423000
       H        -5.663000       -0.744000      -10.224000
       H        -6.166000       -1.340000       -9.957000
       O        1.4405000        3.612000        1.674000
       H        14.331000        4.609000        1.663000

依旧......

我尝试使用

awk '{f1 = $0; getline<"motherfile"; print f1, $7}' < child1.c > newchild1.c

但这仅用于向一个文件添加一列,我想将该列放到多个文件中。

注意newchild.c需要像这样。

       O        -5.689000       -0.628000      -10.423000 -0.834000       
       H        -6.663000       -0.744000      -10.224000 0.417000
       H        -5.166000       -1.340000       -9.957000 0.417000
       O        11.405000        3.612000        1.674000 -0.834000
       H        11.331000        4.609000        1.663000 0.417000

1 个答案:

答案 0 :(得分:1)

awk中,使用>>>打印语句可以redirected to a file。以下示例将motherfile的第7列读入内存,并写入一个新文件,其中包含字符串new,包括已保存的列。

awk 'NR==FNR{a[FNR]=$7;next}{print$0,a[FNR]>"new"FILENAME}' motherfile
    child1.c child2.c ...