首页 > 解决方案 > 用awk比较字符串两个文件

问题描述

我正在尝试将 file1 中的字段 5 与 file2 中的字段 2 进行比较,并在它们相等时显示行。

文件 1

"202005";"RS";"4301602";"CITY";"12651500714";"***.368.660-**";"TESTE TESTE";"-2";""
"202005";"RS";"4301602";"BAGE";"00000000000";"***.977.440-**";"XXXXX XXXEZ";"-2";""

文件2

"93330090006";"12651500714";"TESTE XX";
"01168199018";"16108835006";"SOME NAME";

我搜索并使用了很多代码,但它不起作用。我的最后一个代码:

awk -F";"  'NR==FNR{a[$4,$2];next} ($0) in a' file1 file2

预期的结果可以是 file1 的整行:

"202005";"RS";"4301602";"CITY";"12651500714";"***.368.660-**";"TESTE TESTE";"-2";""

标签: bashawk

解决方案


你可以试试这段代码:

awk 'BEGIN{FS=";"} FNR == NR {seen[$2]; next} $5 in seen' f2 f1
"202005";"RS";"4301602";"CITY";"12651500714";"***.368.660-**";"TESTE TESTE";"-2";""

此命令将仅打印 file2 中的行,其中 file1 的第 5 列与 file2 的第 2 列相同。


推荐阅读