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