Manjaro
比較兩個文件的前 20 行
我可以比較
n
兩個文件的前 20 行(或多行)的簡單方法是什麼?我已經設置了一個自動的
pg_dump
,但事實證明正在創建的轉儲已損壞,現在無法恢復。我還有一個一年前的好轉儲文件,我想比較兩個文件的前 20 行。
這樣做的簡單方法是什麼?
我在 Manjaro Linux 上。
使用帶有程序替換 (
<(...)
) 的 shell,例如bash
或zsh
: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 行時使用該文件。您可能希望在上面的命令中使用
-c
or-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