Ausgabe eines Befehls in die erste Zeile einer Datei

Ausgabe eines Befehls in die erste Zeile einer Datei

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 lsin 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 idie erste Zeile des Befehls ls $(ls| head -1)in die list.txtDatei 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.txthinein 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

verwandte Informationen