首页 > 解决方案 > 基于bash shell中的公共列合并文件

问题描述

我有两个这样的文件:

文件1.txt

USA
Italy
Canada
France

文件2.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

输出文件中国家的顺序必须与输入严格相同,没有排序,所以我不能使用join命令

关于我可以使用的 linux 命令的任何建议?

标签: linux

解决方案


  1. 对文件进行排序
  2. 加入他们
  3. sed输出
  4. (如果你愿意,专栏吃了它们)

例子:

$ 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

推荐阅读