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)
归档时间: |
|
查看次数: |
22038 次 |
最近记录: |