使用linux命令行,我需要輸出文本file2中的行,這些行已經在file1中找到。從File2中提取出的行已經找到File1
文件1:
C
A
G
E
B
D
H
F
文件2:
N
I
H
J
K
M
D
L
A
輸出:
A
D
H
謝謝!
使用linux命令行,我需要輸出文本file2中的行,這些行已經在file1中找到。從File2中提取出的行已經找到File1
文件1:
C
A
G
E
B
D
H
F
文件2:
N
I
H
J
K
M
D
L
A
輸出:
A
D
H
謝謝!
使用更靈活的工具將awk
awk 'NR==FNR{lines[$0]++; next} $1 in lines'
例
$ awk 'NR==FNR{lines[$0]++; next} $1 in lines' file1 file2
H
D
A
它能做什麼?
NR==FNR{lines[$0]++; next}
NR==FNR
檢查記錄的文件數等於記錄總數。這隻適用於第一個文件,file1
lines[$0]++
這裏我們創建一個關聯數組,其文件1中的行爲$0
作爲索引。
$0 in lines
此行僅適用於因爲在以前的行動next
的第二個文件。此檢查,如果在文件2行是有保存陣列lines
中,如果是打印整個行的缺省操作
Awk
比grep
更加靈活,因爲你可以在列file1與文件2中的任何一列,並決定打印任何列而不是打印整行
@EdMorton我錯過了。在答案中更新。感謝您指出。 – nu11p01n73R
工作謝謝。 – SMed79
您正在尋找工具'grep'
檢查了這一點。
比方說你有file1
& file2
文件輸入
grep -f file1 file2
將返回
H
D
A
爲什麼地球上管道到'awk' ?? 'grep -f file1 file2'是你所需要的。 –
我的錯誤,謝謝你的指針。 – Fawzan
沒問題,這就是爲什麼沒有downvote,只是混淆':p' –
我已經測試過'grep -f',但得到[錯誤信息](http://stackoverflow.com/questions/30961219/extract-lines-from-file2-already-found-file1#comment49977455_30961263)。 – SMed79