J86*_*J86 2 file-comparison manjaro
我可以比较n
两个文件的前 20 行(或多行)的简单方法是什么?
我已经设置了一个自动的pg_dump
,但事实证明正在创建的转储已损坏,现在无法恢复。
我还有一个一年前的好转储文件,我想比较两个文件之间的前 20 行。
有什么简单的方法可以做到这一点?
我在 Manjaro Linux 上。
使用带有进程替换 ( <(...)
)的 shell ,例如bash
或zsh
:
diff <( head -n 20 file1 ) <( head -n 20 file2 )
Run Code Online (Sandbox Code Playgroud)
这head -n 20
在每个文件上运行以获取每个文件的前 20 行,在两个单独的进程替换中。每个进程替换都将扩展为一个文件的路径名,其中的命令的输出可以从中读取(这些文件是临时的,以后会被删除)。
diff
然后调用该实用程序来比较这两组数据。
没有进程替换:
diff <( head -n 20 file1 ) <( head -n 20 file2 )
Run Code Online (Sandbox Code Playgroud)
这会从一个文件的前 20 行创建一个单独的文件,并使用它,diff
而其他文件的前 20 行是从标准输入读取的。
您可能希望在上面的命令中使用-c
或-u
或其他一些选项diff
来获取您选择的差异格式(请参阅diff
手册)。
如果文件被压缩,那么您必须解压缩数据:
head -n 20 file1 >file1.short
head -n 20 file2 | diff file1.short -
rm -f file1.short
Run Code Online (Sandbox Code Playgroud)
或者,没有进程替换:
gzip -d -c <file1 | head -n 20 >file1.short
gzip -d -c <file2 | head -n 20 | diff file1.short -
rm -f file1.short
Run Code Online (Sandbox Code Playgroud)