[英]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.