根据bash shell中的公共列合并文件

时间:2019-07-09 10:53:16

标签: linux

我有两个这样的文件:

file1.txt

USA
Italy
Canada
France

file2.txt

Australia TRUE
Belize    TRUE
Canada    FALSE
CostaRica TRUE
France    FALSE
Holland   TRUE
Italy     TRUE
Mongolia  FALSE
USA       FALSE

我想基于公共行合并文件,并首先获得以下输出:

USA    FALSE
Italy  TRUE
Canada FALSE
France FALSE

然后我想将FALSE转换为0,将TRUE转换为1

USA    0
Italy  1
Canada 0
France 0

输出文件中国家/地区的顺序必须与输入严格相同,不能进行排序,因此我不能使用连接命令

对我可以使用的linux命令有何建议?

1 个答案:

答案 0 :(得分:0)

  1. sort文件
  2. join他们
  3. sed输出
  4. ({column如果需要,可以给他们吃)

示例:

$ join -j1 <(sort -k1 file1.txt) <(sort -k1 file2.txt) | sed 's/TRUE/1/g; s/FALSE/0/g' # | column -t -s' '

注意:但是,这会将您的结果重新排序为:

Canada 0
France 0
Italy  1
USA    0