bash- 获取两个文件中具有相同列值的所有行

标签 bash shell sorting uniq

我有两个文本文件,每个文件有 3 个字段。我需要在第三个字段中获取具有相同值的行。第三个字段值在每个文件中都是唯一的。示例:

文件1:

1 John 300
2 Eli 200
3 Chris 100
4 Ann 600

文件2:

6 Kevin 250
7 Nancy 300
8 John 100

输出:

1 John 300
7 Nancy 300
3 Chris 100
8 John 100

当我使用以下命令时:

cat file1 file2 | sort -k 3 | uniq -c -f 2 

我只从输入文件中得到一行具有重复值。我两个都需要!

最佳答案

这个单行代码为您提供了输出:

awk 'NR==FNR{a[$3]=$0;next}$3 in a{print a[$3];print}' file1 file2

关于bash- 获取两个文件中具有相同列值的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26129058/

相关文章:

bash 多个 heredocs 等

python - 使用多个管道从 Python 执行 Shell 脚本

bash - 以编程方式打开 gnome 终端并在执行 bashrc 后执行命令

arrays - 使用与值匹配的键对映射数组进行排序 GO

python - 我可以从 python 脚本运行 shell 函数吗?

linux - 如何从文件中获取输入并将输出存储到另一个文件

shell - 为什么从源代码构建的 dash 0.5.8 会导致 "dash -c ' :'"失败?

ios - UITableView 按日期排序

arrays - 数组所有子集中的最大或值

bash - 在 Bash 中检查文件夹大小