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