3 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
comm -23 file1 file2
sort

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
awk 'NR==FNR{a[$0];next} !($0 in a)' fileB fileA
A C
它怎麼工作?
NR==FNR{a[$0];next}
成語(yǔ)用于將第一個(gè)文件存儲(chǔ)在關(guān)聯(lián)數(shù)組中,作為以后的“包含”測(cè)試的鍵。
NR==FNR
正在檢查是否正在掃描第一個(gè)文件,其中全局行計(jì)數(shù)器(NR)等于當(dāng)前文件行計(jì)數(shù)器(FNR)。
a[$0]
將當(dāng)前行作為鍵添加到關(guān)聯(lián)數(shù)組中,請(qǐng)注意,它的行為類似于一個(gè)集合,其中不會(huì)有任何重復(fù)的值(鍵)。
!($0 in a)
我們現(xiàn)在下一個(gè)檔案里, in
是一個(gè)包含測(cè)試,在這里它檢查當(dāng)前行是否在我們從第一個(gè)文件的第一步中填充的集合中, !
否定了條件。這里缺少的是操作,默認(rèn)情況下它是 {print}
而且通常沒(méi)有寫得很清楚。
$ awk '...' badwords allwords > goodwords
$ awk 'NR==FNR{a[$0];next} !($0 in a){print > FILENAME".clean"}' bad file1 file2 file3 ...
添加回答
舉報(bào)