Ось вам:
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}
шлях , це було б (хвіст робить з кінця назад кількість рядків).
Редагувати 5.10.16:
Це специфічно для Bash (і сумісних оболонок). Якщо вам потрібно скористатися цим із чогось іншого:
bash -c 'diff <(...) <(...)'