bash - 用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";""
解决方案
你可以试试这段代码:
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 列相同。
推荐阅读
- amazon-cloudwatch - 基于自定义指标的指标名称跨所有维度的 Cloudwatch 警报
- bash - /bin/ls: 参数列表太长
- python - 在 Python 中使用 sortedcontainers 来模拟 BST
- r - ggplot图中的多行x轴
- python - 如何让 input() 考虑将整个字符串插入到列表中?
- node.js - 与 MongoDB Atlas 连接时出现问题
- json - VS Code 内置颜色选择器功能在 JSON 文件中不起作用
- php - 计算PHP中的工作时间时差
- html - 如何使用里面的内容为 div 设置动画?
- c++ - C++ 运行时间正在增加