Voilà :
diff <(head -n 1 file1) <(head -n 1 file2)
(cela ne renverrait rien du tout).
diff <(head -n 2 file1) <(head -n 2 file2)
Returns:
2c2
< 1
---
> 3
Vous pouvez incorporer cela dans un script pour faire les choses que vous mentionnez.
#!/bin/bash
fileOne=${1}
fileTwo=${2}
numLines=${3:-"1"}
diff <(head -n ${numLines} ${fileOne}) <(head -n ${numLines} ${fileTwo})
Pour l'utiliser, il suffit de rendre le script exécutable avec chmod +x nameofscript.sh
puis pour exécuter, ./nameofscript.sh ~/file1 ~/Docs/file2
Cela laisse le nombre de lignes par défaut à 1, si vous en voulez plus, ajoutez un nombre à la fin de cette commande.
(Ou vous pouvez faire des changements dans votre script avec -f1 file1 -f2 file2 -n 1, mais je ne me souviens pas du haut de ma tête de la déclaration de cas pour cela).
head
retourne depuis le début le # de lignes comme suggéré par -n
. Si vous deviez faire l'inverse, ce serait tail -n ${numLines}
(la queue fait de la fin le nombre de lignes).
Modifier 10/05/16 :
Ceci est spécifique à Bash (et aux shells compatibles). Si vous avez besoin de l'utiliser à partir d'autre chose :
bash -c 'diff <(...) <(...)'