[英]AWK to filter to files if their columns match
我基本上正在使用两个文件(文件1和文件2)。 目标是编写一个脚本,如果文件1、2中的1、2、3列匹配,则从文件1中提取行。 这是我一直在玩的代码:
awk -F'|' 'NR==FNR{c[$1$2$3]++;next};c[$1$2$3] > 0' file1 file2 > filtered.txt
ile1和file2都看起来像这样(但有更多列):
name1 0 c
name1 1 c
name1 2 x
name2 3 x
name2 4 c
name2 5 c
我提供的awk代码未产生任何输出。 任何帮助,将不胜感激!
您的定界符不是管道,请尝试此操作
$ awk 'NR==FNR {c[$1,$2,$3]++; next} c[$1,$2,$3]' file1 file2 > filtered.txt
要么
$ awk 'NR==FNR {c[$0]++; next} c[$0]' file1 file2 > filtered.txt
但是,如果要匹配整行,则使用grep
可能会更容易
$ grep -xFf file1 file2 > filtered.txt
awk '{key=$1 FS $2 FS $3} NR==FNR{file2[key];next} key in file2' file2 file1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.