如何仅区分两个文件的第一行?

gsi*_*011 23 linux diff command-line

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

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

a
1
2
Run Code Online (Sandbox Code Playgroud)

和:

a
3
4
Run Code Online (Sandbox Code Playgroud)

ner*_*ler 34

干得好:

diff <(head -n 1 file1) <(head -n 1 file2)
Run Code Online (Sandbox Code Playgroud)

(这不会返回任何东西)。

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

Returns:
2c2
< 1
---
> 3
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash

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

diff <(head -n ${numLines} ${fileOne}) <(head -n ${numLines} ${fileTwo})
Run Code Online (Sandbox Code Playgroud)

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

(或者你可以在你的脚本中使用 -f1 file1 -f2 file2 -n 1 进行切换,但我不记得我头顶的 case 语句)。

head从开头返回 # of lines 建议-n。如果你想做反向,它会是tail -n ${numLines}(tail 从最后回到行数)。

16 年 5 月 10 日编辑:

这是特定于 Bash(和兼容的 shell)的。如果您需要从其他地方使用它:

bash -c 'diff <(...) <(...)'
Run Code Online (Sandbox Code Playgroud)