簡體   English   中英

如果文件的列匹配,則AWK可以過濾文件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM