Diff

在 2 個文件中獲取不匹配的條目

  • September 15, 2018

問題..{ 我的使用者在 /home 中有主目錄,因此我可以使用以下命令獲取符合我的條件的使用者列表。

第 1 步:獲取使用者列表

du -h --max-depth=1 /home 2>/dev/null | egrep -v '(!G|.cp)' | awk -F"/" '{print $NF}'

注意:擴展 grep 模式是我的要求,因為主目錄包含需要反向 grep 的額外文件,而且 !G 表示我需要數據小於 1G 的部分使用者列表。

第 2 步:獲取已暫停使用者的列表

ls -al /somedir/ | grep -v 'lock'

第 3 步:需要比較文件 1 中不存在於文件 2 中的 2 個列表並獲取行

所以我被困在這一步,我嘗試了 uniq & diff 命令,但我沒有得到符合我標準的使用者列表。

PS:應該比較兩個文件的命令不應該將這些文件逐行比較,而是整體比較,因此文件 1 中的任何行和文件 2 中缺失的任何行都應該是我的輸出。

好的,我研究了一下,我正在尋找的解決方案是這個

comm -23 <(sort File1) <(sort File2)

使用括號將兩個命令組合為一個:

( du -h --max-depth=1 /home 2>/dev/null | egrep -v '(!G|.cp)' | awk -F"/" '{print $NF}' ; ls -al /somedir/ | grep -v 'lock' ; ) | sort | uniq

括號中的兩個命令的輸出被連接起來,並顯示為單個程序(子shell)的輸出。

PS:您/home在目錄中的第一個命令輸出…

引用自:https://unix.stackexchange.com/questions/453000