awk - 将一个文件中第三列的值与另一个文件中的值进行比较
问题描述
我有两个文件。
文件 1 具有以下格式:
f 55 SE 0 0 0
re 13 SE 0 0 0
文件 2 具有以下格式:
fe 10 f
fe 02 h
fe 02 re
我需要先比较文件,看看文件 2 的第三列值是否存在于文件 1 的第一列中。如果是,我需要文件 1 中包含两个文件中存在的值的整行到打印到输出文件。如示例所示,文件 2 的第三列中的某些值不存在于文件 1 的第一列中。我曾尝试使用 awk,但老实说,我是编程新手,不完全确定如何去做.
我的预期输出如下所示:
f 55 SE 0 0 0
re 02 SE 0 0 0
它应该与文件 1 具有相同的格式,它只是过滤掉第一列值与文件 2 的第三列值不同的行。
解决方案
编辑:添加此解决方案作为 OP 现在添加了预期的输出。
awk 'FNR==NR{a[$3]; next} $1 in a' File2 File1
由于您尚未发布示例输出,因此无法对其进行测试,请您尝试以下操作。
awk 'FNR==NR{a[$3]=$1 OFS $2;next} ($1 in a){print $0,a[$1]}' Input_file2 Input_file1
推荐阅读
- python - 更改嵌入的页脚
- python - django中用户特定的下载文件
- pytorch - 如何在 pytorch 中保存带有训练(autograd)操作的 ONNX 模型?
- regex - 用 htaccess 替换部分 URL 并在字符串中添加两个零
- django - Django:具有代理模型的扩展用户添加额外的方法,如何在模板中使用该方法?
- html - 如何使用 aria 标准将 5.00 美元/天解读为“每天 5 美元”?
- python - 如何使用 Sympy Beam 从三个点计算 bmoment?
- python - 错误:尝试安装 pyOpt-1.2.0 时找不到 vcvarsall.bat
- amazon-web-services - 在 AWS 实例中执行“user_data”时如何更改 root 用户或如何使用 ubuntu 用户执行“yarn start”
- git - 如何为同一台计算机中的多个用户配置 Git SSH