通过忽略AWK行来合并两个文件

时间:2017-09-29 06:22:16

标签: awk merging-data

我有两个文件: 文件1:

/mnt/enjayvol1/backup/test.sh
/mnt/enjayvol1/esync/lokesh.sh
/mnt/enjayvol1/share/mehul

文件2:

a 1 2 3 
b 1 2 3
c 1 2 3
d 1 2 3

现在我想通过忽略文件2的标题将它们合并到一个文件中:

hola
l m  n o p q 

有没有人知道如何做到这一点?

2 个答案:

答案 0 :(得分:4)

如果没有awk

,也可以实现相同的预期输出
$ cat file1
a 1 2 3 
b 1 2 3
c 1 2 3
d 1 2 3

$ cat file2
hola
l m  n o p q 

$ pr -mtJS' '  file1 <(tail -n +2 file2)
a 1 2 3  l m  n o p q
b 1 2 3 
c 1 2 3 
d 1 2 3 

$ paste -d ' '  file1 <(tail -n +2 file2)
a 1 2 3  l m  n o p q 
b 1 2 3
c 1 2 3
d 1 2 3

答案 1 :(得分:2)

$ awk 'NR==FNR{if(NR>1)a[NR-1]=$0;next}{print $0,a[FNR]}' file2 file1
a 1 2 3 l m  n o p q 
b 1 2 3
c 1 2 3
d 1 2 3

简要说明,

  • NR==FNR{if(NR>1)a[NR-1]=$0;next}:在file2中,省略标题并从第二条记录保存到[NR-1]。 注意:这也适用于file2中的行长大
  • print $0,a[FNR]:打印file1中的$ 0内容和[FNR]的组合。 FNR将是file1中的记录号。