Manjaro

比較兩個文件的前 20 行

  • March 13, 2021

我可以比較n兩個文件的前 20 行(或多行)的簡單方法是什麼?

我已經設置了一個自動的pg_dump,但事實證明正在創建的轉儲已損壞,現在無法恢復。

我還有一個一年前的好轉儲文件,我想比較兩個文件的前 20 行。

這樣做的簡單方法是什麼?

我在 Manjaro Linux 上。

使用帶有程序替換 ( <(...)) 的 shell,例如bashzsh

diff <( head -n 20 file1 ) <( head -n 20 file2 )

head -n 20在每個文件上執行以獲取每個文件的前 20 行,在兩個單獨的程序替換中。每個程序替換都將擴展為可以從中讀取命令輸出的文件的路徑名(這些文件是臨時的,稍後將被刪除)。

然後呼叫該diff實用程序來比較這兩組數據。

沒有程序替換:

head -n 20 file1 >file1.short
head -n 20 file2 | diff file1.short -
rm -f file1.short

這會從一個文件的前 20 行創建一個單獨的文件,並diff在從標準輸入讀取其他文件的前 20 行時使用該文件。

您可能希望在上面的命令中使用-cor-u或其他選項diff來獲取您選擇的差異格式(請參閱diff手冊)。


如果文件被壓縮,那麼您將不得不解壓縮數據:

diff <( gzip -d -c <file1 | head -n 20 ) <( gzip -d -c <file2 | head -n 20 )

或者,沒有過程替換:

gzip -d -c <file1 | head -n 20 >file1.short
gzip -d -c <file2 | head -n 20 | diff file1.short -
rm -f file1.short

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