【问题标题】:How to merge text files with common pair of strings in their lines如何将文本文件与行中的常见字符串对合并
【发布时间】:2016-04-07 02:53:26
【问题描述】:

我有两个行格式如下的文本文件:

Value - Value - Number

我需要将这些文件合并到一个新文件中,该文件只包含具有公共值 - 值对的行,后跟两个数字值。

例如,如果我有这些文件:

文件1.txt

Jack - Mark - 12
Alex - Ryan - 15
Jack - Ryan - 22

文件2.txt

Paul - Bill - 11
Jack - Mark - 18
Jack - Ryan - 20

合并后的文件将包含:

Jack - Mark - 12 - 18
Jack - Ryan - 22 - 20

我该怎么做?

【问题讨论】:

    标签: bash shell parsing unix


    【解决方案1】:

    awk 来救援!

    awk -F' - ' 'BEGIN{OFS=FS} 
               NR==FNR{a[$1,$2]=$3;next} 
          ($1,$2) in a{print $1,$2,a[$1,$2],$3}' file1 file2
    
    Jack - Mark - 12 - 18
    Jack - Ryan - 22 - 20
    

    或者,使用装饰/加入/取消装饰

    $ join <(sort file1 | sed 's/ - /-/') <(sort file2 | sed 's/ - /-/') |
      sed 's/-/ - /'
    
    Jack - Mark - 12 - 18
    Jack - Ryan - 22 - 20
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-28
      • 1970-01-01
      • 2011-06-07
      • 2021-05-22
      • 1970-01-01
      相关资源
      最近更新 更多