両方のファイルの最初の20行を比較します。

両方のファイルの最初の20行を比較します。

n2つのファイルの最初の20行(または行)を比較する簡単な方法はありますか?

自動ダンプを設定しましたが、pg_dump生成されたダンプが破損し、今は復元できないことがわかりました。

1年前の良いダンプファイルがまだ残っていて、2つのファイル間の最初の20行を比較したいと思います。

これを行う簡単な方法はありますか?

私はManjaro Linuxを使用しています。

答え1

たとえば、<(...)プロセス置換()を持つシェルを使用します。bashzsh

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

これはhead -n 20各ファイルで実行され、2つの別々のプロセス置換から各ファイルの最初の20行を取得します。各プロセス置換は次に拡張される。ファイルパス名コマンドの出力を読み取ることができます(このファイルは一時ファイルなので後で削除されます)。

その後、2つのデータセットを比較するためにユーティリティがdiff呼び出されます。

プロセス交換なし:

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

これは、あるファイルの最初の20行に基づいて別々のファイルを生成し、diff標準入力から別のファイルの最初の20行を読み取る間にそのファイルを使用します。

選択したdiff形式を取得するには、上記のコマンドで使用するか、-c他のオプションを使用できます(マニュアルを参照)。-udiffdiff


ファイルが圧縮されている場合は、データを解凍する必要があります。

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

関連情報