我對Shell或Bash很新鮮。我有一列1列約5000行,file2有5列240k行。如何檢查file1中5000行的值是否在file2的第二列中?如何檢查另一個文件的行內的文件行是什麼
$wc -l file1
$5188
$wc -l file2
$240,888
我對Shell或Bash很新鮮。我有一列1列約5000行,file2有5列240k行。如何檢查file1中5000行的值是否在file2的第二列中?如何檢查另一個文件的行內的文件行是什麼
$wc -l file1
$5188
$wc -l file2
$240,888
您可以使用awk,像這樣的事情做到這一點:
awk 'NR == FNR {a[$2] = $1; next} {if ($2 in a){print(a[$2], $1)}}' file1 file2
基本上你讀的第一個文件,它的內容存儲在數組中的「a」。然後讀取第二個文件,並檢查每行的第二個字段是否包含在數組「a」中,如果是,則將其打印出來。
我的答案假設你的字段被空格分隔,如果他們不是,你將不得不改變分隔符。所以,如果你的字段用逗號隔開,你將需要:
awk -F, .....
上述語法不工作,它可以進一步簡化爲:
awk 'FNR==NR{a[$1]=$2; next} {print $1, a[$1]}' file2 file1
什麼在第一個文件的外觀做線喜歡?他們是某種形式的身份證件還是自由文本? – neilh