我有一個文件值的列表:刪除一個文件從另一個文件匹配的模式,價值觀
item2
item3
item4
,我想從另一個文件中刪除整條生產線時行看起來是這樣的:
item1|XXXX|ABCD
item2|XXXX|ABCD
item3|XXXX|ABCD
item4|XXXX|ABCD
item5|XXXX|ABCD
讓我留下了:
item1|XXXX|ABCD
item5|XXXX|ABCD
是否有bash
序列做到這一點?
我有一個文件值的列表:刪除一個文件從另一個文件匹配的模式,價值觀
item2
item3
item4
,我想從另一個文件中刪除整條生產線時行看起來是這樣的:
item1|XXXX|ABCD
item2|XXXX|ABCD
item3|XXXX|ABCD
item4|XXXX|ABCD
item5|XXXX|ABCD
讓我留下了:
item1|XXXX|ABCD
item5|XXXX|ABCD
是否有bash
序列做到這一點?
grep -vf
可以做的工作:
grep -vFf file1 file2
item1|XXXX|ABCD
item5|XXXX|ABCD
如果你的獨特標誌是|XXXX|ABCD|
字符串,你可以grep
出來:
$ grep -vF '|XXXX|ABCD|' input > output
它的安全使用選項-F
(固定字符串)因爲你的模式危險地接近於包含正則表達式元字符(即在你的情況下:|
—它在默認grep
中不活動正則表達式的語法,但當你使用簡單模式時,你不會擔心這一點)。
如果你的獨特模式是行的其餘部分,可以使用整個文件與grep
的-f
選項模式列表:
$ grep -vFf item_list <input> output
awk來救援!
$ awk -F"|" 'NR==FNR{a[$1];next} !($1 in a)' remove items
item1|XXXX|ABCD
item5|XXXX|ABCD
應除去項目列表中的文件「刪除」,並在文件中的數據「項」