首页 > 解决方案 > 如何在Linux中匹配2个文件一个文件有1列,第二个文件有2列

问题描述

我有 2 个文件。

文件 1:

123456789
789465123
456789132

文件 2:

r6rg6r6,123456789
dfg4665,789465123
dthegfd,456789132

我需要匹配 ID 并将 ID 打印到文件中

r6rg6r6
dfg4665
dthegfd

我试过awk, cmp, comm,diff什么都没有

这是我试图在命令行中运行的命令

awk '(NR==FNR){a[$1]; next}($2 in a){print $1}' file1 file2 > test.csv

标签: linuxunixawk

解决方案


你试过了吗grep,它很强大

grep -F <file1> <file2> | cut -d ' ' -f1

或者只是awk

awk '(NR==FNR){a[$1]; next}($2 in a){print $1}' <file1> <file2>

但是,由于您已经尝试过此解决方案,因此可能是由于 dos/windows 副本而导致 CRLF 终止的问题。虽然您可以使用 解决此问题dos2unix,但您也可以使用以下awk行(仅限 GNU awk):

awk -v RS='\r?\n' '(NR==FNR){a[$1]; next}($2 in a){print $1}' <file1> <file2>

推荐阅读