Ну вот:
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, но я не помню, чтобы в верхней части моей головы был указан case).
head
возвращает с начала количество строк в соответствии с предложением -n
. Если бы вы захотели сделать обратное, это был бы tail -n ${numLines}
(tail делает с конца число строк).
Изменить 5/10/16:
Это характерно для Bash (и совместимых оболочек). Если вам нужно использовать это из чего-то другого:
bash -c 'diff <(...) <(...)'