我想問一下,如何檢查的文件,如果我有兩個列表名稱的,像如何在Linux中檢查第二個列表名稱的文件名?
cat /data/file1/ab.txt
aa
bb
cc
dd
ee
cat /data/file2/cd.txt
cc
dd
ee
aa
zz
xx
yy
,我想輸出是這樣的:
zz
xx
yy
我想問一下,如何檢查的文件,如果我有兩個列表名稱的,像如何在Linux中檢查第二個列表名稱的文件名?
cat /data/file1/ab.txt
aa
bb
cc
dd
ee
cat /data/file2/cd.txt
cc
dd
ee
aa
zz
xx
yy
,我想輸出是這樣的:
zz
xx
yy
sort ab.txt > /tmp/file1
sort cd.txt > /tmp/file2
comm -13 /tmp/file1 /tmp/file2
的comm
程序比較兩個文件並顯示它們共同或唯一的行。 -13
表示省略文件1和共同的唯一行。
您還可以使用grep
:
$ grep -vf ab.txt cd.txt
zz
xx
yy
-f
告訴grep
從ab.txt
獲得的圖案和-v
反轉匹配。
waw,它的工作... – wirawiri
您還可以使用awk
:
awk 'NR==FNR{a[$1];next}!($1 in a)' ab.txt cd.txt
這個命令也可以工作... 非常感謝你們所有人......乾杯 – wirawiri
或'COMM -13 <(排序ab.txt)<(排序cd.txt)' –
@JS웃這就是我通常使用,但我不」 t認爲所有的shell都實現了'<(',所以我沒有顯示它。 – Barmar
真的,它不符合POSIX標準,但在這裏應該是安全的,因爲OP用'bash'標記了這個問題。 –