從 bash 中的另一個檔案中刪除項目列表

從 bash 中的另一個檔案中刪除項目列表

從另一個文件(無序)中刪除一個文件中列出的項目的最有效方法(不重複執行命令)是什麼?

人們可以透過以下方式輕鬆取得第二個檔案中不匹配項目的列表

cat first_file.txt second_file.txt | sort | uniq -u

但這也將包含第一個文件中的所有不匹配的項目...現在怎麼辦?

答案1

awk程式對每個文件進行一次遍歷:

awk '
    NR == FNR {f1[$0] = 1; next}
    !($0 in f1)
' file1 file2

comm 對這項工作很有用。它確實需要對輸入檔進行排序:

# output lines unique to file2
comm -13 <(sort file1) <(sort file2)

相關內容