Proszę bardzo:
diff <(head -n 1 file1) <(head -n 1 file2)
(to nie zwróciłoby nic takiego).
diff <(head -n 2 file1) <(head -n 2 file2)
Returns:
2c2
< 1
---
> 3
Możesz włączyć to do skryptu, aby robić rzeczy, o których wspominasz.
#!/bin/bash
fileOne=${1}
fileTwo=${2}
numLines=${3:-"1"}
diff <(head -n ${numLines} ${fileOne}) <(head -n ${numLines} ${fileTwo})
Aby tego użyć, po prostu ustaw skrypt na wykonywalny, chmod +x nameofscript.sh
a następnie wykonaj, ./nameofscript.sh ~/file1 ~/Docs/file2
co pozostawia domyślną liczbę wierszy na 1, jeśli chcesz więcej, dodaj liczbę na końcu tego polecenia.
(Lub możesz zrobić przełączniki w swoim skrypcie z opcją -f1 plik1 -f2 plik2 -n 1, ale nie przypominam sobie z góry instrukcji przypadku).
head
zwraca od początku liczbę wierszy zgodnie z sugestią -n
. Gdybyś chciał zrobić odwrotnie, byłoby to tail -n ${numLines}
(ogon robi od końca wstecz liczbę linii).
Edytuj 5/10/16:
Jest to specyficzne dla Bash (i kompatybilnych powłok). Jeśli musisz użyć tego z czegoś innego:
bash -c 'diff <(...) <(...)'