Aqui você vai:
diff <(head -n 1 file1) <(head -n 1 file2)
(isso não retornaria nada do que nunca).
diff <(head -n 2 file1) <(head -n 2 file2)
Returns:
2c2
< 1
---
> 3
Você pode incorporar isso em um script para fazer as coisas que menciona.
#!/bin/bash
fileOne=${1}
fileTwo=${2}
numLines=${3:-"1"}
diff <(head -n ${numLines} ${fileOne}) <(head -n ${numLines} ${fileTwo})
Para usar isso, basta tornar o script executável com chmod +x nameofscript.sh
e, em seguida, executar ./nameofscript.sh ~/file1 ~/Docs/file2
. Isso deixa o número padrão de linhas em 1, se você quiser acrescentar mais um número ao final desse comando.
(Ou você poderia fazer opções em seu script com -f1 arquivo1 -f2 arquivo2 -n 1, mas não me lembro do topo da minha cabeça a declaração de caso para isso).
head
retorna do início o número de linhas, conforme sugerido por -n
. Se você quisesse fazer o reverso, seria tail -n ${numLines}
(a cauda faz no final o número de linhas).
Editar 5/10/16:
Isso é específico para Bash (e shells compatíveis). Se você precisar usar isso de outra coisa:
bash -c 'diff <(...) <(...)'