需要比较两个文件中的两列,并使用unix将所有列写入新文件

时间:2017-07-11 18:06:46

标签: unix

我在unix环境中有2个文件

文件1:

1 a
2 b
3 c

file2的:

----------
## Heading ##

2 bb
1 aa
3 cc

如何获取输出文件

输出:

1 a 1 aa
2 b 2 bb
3 c 3 cc

使用unix shell脚本

1 个答案:

答案 0 :(得分:1)

使用awk。这是一个awk经典:

$ awk 'NR==FNR{a[$1]=$0;next}$1 in a{print a[$1],$0}' file1 file2
2 b 2 bb
1 a 1 aa
3 c 3 cc

说明:

$ awk '
NR==FNR {             # process first file
    a[$1]=$0          # hash record, use first field as hash key
    next              # move to next record
}
$1 in a {             # second file, if key found in the hash
    print a[$1],$0    # output it from the hash along with the current record
}' file1 file2        # mind the order

订单将是第二个文件订单。如果您希望以其他顺序排序,请排序file2awk ... file1 <(sort file2))或awk进程的输出(awk ... | sort)。