Bitte schön:
diff <(head -n 1 file1) <(head -n 1 file2)
(Dies würde überhaupt nichts zurückgeben).
diff <(head -n 2 file1) <(head -n 2 file2)
Returns:
2c2
< 1
---
> 3
Sie könnten das in ein Skript integrieren, um die Dinge zu tun, die Sie erwähnen.
#!/bin/bash
fileOne=${1}
fileTwo=${2}
numLines=${3:-"1"}
diff <(head -n ${numLines} ${fileOne}) <(head -n ${numLines} ${fileTwo})
Um dies zu verwenden, machen Sie das Skript einfach ausführbar mit chmod +x nameofscript.sh
und führen Sie dann Folgendes aus: Damit ./nameofscript.sh ~/file1 ~/Docs/file2
bleibt die Standardanzahl der Zeilen auf 1, wenn Sie eine Nummer am Ende dieses Befehls anhängen möchten.
(Oder Sie können in Ihrem Skript mit -f1 Datei1 -f2 Datei2 -n 1 wechseln, aber ich kann mich nicht mehr an die case-Anweisung dafür erinnern).
head
Gibt von Anfang an die Anzahl der Zeilen zurück, wie von vorgeschlagen -n
. Wenn Sie rückwärts machen wollen, wäre es tail -n ${numLines}
(Schwanz macht vom Ende zurück die Anzahl der Zeilen).
Edit 5/10/16:
Dies gilt speziell für Bash (und kompatible Shells). Wenn Sie dies von etwas anderem verwenden müssen:
bash -c 'diff <(...) <(...)'