[英]bash delete lines in file containing lines from another file
file1包含:
someword0
someword2
someword4
someword6
someword8
someword9
someword1
file2包含:
someword2
someword3
someword4
someword5
someword7
someword11
someword1
因此,我不會只包含file1中不包含file2的行。 我怎么能在bash中做到這一點?
答案是:
grep -v -x -f file2 file1
-v for select non-matching lines
-x for matching whole lines only
-f f2 to get patterns from f2.
您可以使用grep -vf
:
grep -vwFf file2 file1
someword0
someword6
someword8
someword9
檢查man grep
以獲得此處使用的所有grep
選項的詳細信息。
您也可以使用comm
命令:
comm -23 file1 file2
說明:
comm
比較兩個文件並打印出來,分為三列,分別為file1,file2的行以及兩者的行。
使用選項-2和-3(或簡單地使用-23)可以禁止打印這些列,因此您僅獲得file1獨有的行。
如果行是唯一的,請進行左連接並過濾出兩個表中都存在的行。
join <(sort file1) <(sort file2) -o0,2.1 -a1 | awk '!$2'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.