2013-12-09 54 views
1

我對Shell或Bash很新鮮。我有一列1列約5000行,file2有5列240k行。如何檢查file1中5000行的值是否在file2的第二列中?如何檢查另一個文件的行內的文件行是什麼

$wc -l file1 
$5188 
$wc -l file2 
$240,888 
+0

什麼在第一個文件的外觀做線喜歡?他們是某種形式的身份證件還是自由文本? – neilh

回答

2

您可以使用awk,像這樣的事情做到這一點:

awk 'NR == FNR {a[$2] = $1; next} {if ($2 in a){print(a[$2], $1)}}' file1 file2 

基本上你讀的第一個文件,它的內容存儲在數組中的「a」。然後讀取第二個文件,並檢查每行的第二個字段是否包含在數組「a」中,如果是,則將其打印出來。

我的答案假設你的字段被空格分隔,如果他們不是,你將不得不改變分隔符。所以,如果你的字段用逗號隔開,你將需要:

awk -F,  ..... 
0

上述語法不工作,它可以進一步簡化爲:

awk 'FNR==NR{a[$1]=$2; next} {print $1, a[$1]}' file2 file1 
相關問題