
Ich versuche, die Ausgabe eines Befehls in die erste Zeile einer Datei einzufügen.
Ich habe beispielsweise eine Datei mit dem Namen „list.txt“ und möchte einen Text einfügen, der alle Dateinamen in diesem Ordner enthält. Eine Möglichkeit, die Befehlsausgabe ls
in die erste Zeile von list.txt zu leiten.
Antwort1
Die meisten Leute kennen sed als Tool für die Suche und die auf regulären Ausdrücken basierende Suche und Ersetzung, es handelt sich dabei jedoch um einen vollwertigen Editor, mit dem Sie Änderungen vornehmen können.
Sie könnten also einen Befehl wie diesen eingeben. Dadurch wird 1 i
die erste Zeile des Befehls ls $(ls| head -1)
in die list.txt
Datei eingefügt ( ).an Ort und Stelle( -i
).
sed -i "1 i$(ls| head -1)" list.txt
Antwort2
Es gibt keine native Möglichkeit, zur ersten Zeile einer Datei umzuleiten, aber Sie können trotzdem eine temporäre Datei verwenden, um dies zu erreichen. Hängen Sie beispielsweise zuerst die Ausgabe an an list2.txt
, fügen Sie dann cat list.txt
hinein und schreiben Sie die gesamte Ausgabe zurück nach list.txt
:
ls > list2.txt
cat list.txt >> list2.txt
mv list2.txt list.txt
Auf diese Weise sollten Sie finden, wonach Sie suchen.
Antwort3
Es gibt wahrscheinlich eine elegantere Möglichkeit, dies zu tun, aber Sie könnten einfach mehrere Dateien verwenden. Zum Beispiel:
ls | head -n 1 > temp-list.txt
cat list.txt >> temp-list.txt
mv temp-list.txt list.txt