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

通过忽略带有AWK的行来合并两个文件,awk,merging-data,Awk,Merging Data,我有两个文件: 文件1: 文件2: hola l m n o p q 现在我想通过忽略文件2的标题将它们合并到一个文件中,如下所示: a 1 2 3 l m n o p q b 1 2 3 c 1 2 3 d 1 2 3 有人知道怎么做吗 $ 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 简要说明

我有两个文件: 文件1:

文件2:

hola
l m  n o p q 
现在我想通过忽略文件2的标题将它们合并到一个文件中,如下所示:

a 1 2 3 l m n o p q 
b 1 2 3
c 1 2 3
d 1 2 3
有人知道怎么做吗

$ 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}
    :在文件2中,省略头并从第二条记录保存到[NR-1]。注意:这也可以在文件2中的行增长时使用
  • 打印$0,一个[FNR]
    :打印文件1中$0的内容和一个[FNR]的组合。FNR将是文件1中的记录编号
简要说明

  • NR==FNR{if(NR>1)a[NR-1]=$0;next}
    :在文件2中,省略头并从第二条记录保存到[NR-1]。注意:这也可以在文件2中的行增长时使用
  • 打印$0,一个[FNR]
    :打印文件1中$0的内容和一个[FNR]的组合。FNR将是文件1中的记录编号

    • 同样,在不使用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
      
      $cat文件1
      a 12 3
      b 1 2 3
      c 1 2 3
      d 1 2 3
      $cat文件2
      你好
      l m n o p q
      
      $pr-mtJS''file1也可以在不使用
      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
      
      $cat文件1
      a 12 3
      b 1 2 3
      c 1 2 3
      d 1 2 3
      $cat文件2
      你好
      l m n o p q
      
      $pr-mtJS“”文件1谢谢!它可以工作,但在我的输出中我看到3l。3和l之间没有空格@wara,请看我的修改。这应该是一个介于3和l之间的空格。我已经通过添加“\t”解决了这个问题,这里“=”\t“$0;接下来,谢谢!它可以工作,但在我的输出中我看到3l。3和l之间没有空格@wara,请看我的修改。这应该是一个介于3和l之间的空格。我已经通过添加“\t”解决了这个问题,这里“=”\t“$0;接下来是好的解决方案,好的解决方案。