如何仅比较两个文件的第一行?

如何仅比较两个文件的第一行?

我只想比较两个文件的第一行,而不是整个文件。我该怎么做?我只需要第一行的解决方案,但如果你能指定行数,那将是更好的答案。

因此 diff 不会返回以下两个文件之间的差异:

a
1
2

和:

a
3
4

答案1

干得好:

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

(这将不会返回任何内容)。

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

Returns:
2c2
< 1
---
> 3

您可以将其合并到脚本中来执行您提到的操作。

#!/bin/bash

fileOne=${1}
fileTwo=${2}
numLines=${3:-"1"}

diff <(head -n ${numLines} ${fileOne}) <(head -n ${numLines} ${fileTwo})

chmod +x nameofscript.sh要使用它,只需使用然后执行即可使脚本可执行,./nameofscript.sh ~/file1 ~/Docs/file2这将保留默认的行数为 1,如果您想要更多,请在该命令末尾附加一个数字。

(或者您可以在脚本中使用 -f1 file1 -f2 file2 -n 1 进行切换,但我记不清该情况的陈述了)。

head从开头返回行数,如 所示-n。如果你想反向操作,那么就是tail -n ${numLines}(tail 从末尾返回行数)。

编辑于 2016 年 5 月 10 日:

这是 Bash 特有的(以及兼容的 shell)。如果你需要从其他地方使用它:

bash -c 'diff <(...) <(...)'

答案2

diff -U(n 行)文件1 文件2

相关内容