shell script zum header hinzufügen, um eine Datei
Ich versuche, ein Skript zu schreiben fügen Sie ein Marken-header auf meine .cpp-Datei.
meine Lösung ist wie folgt.
cat trademark.txt test.cpp > new_test.cpp && mv new_test.cpp test.cpp
Aber wollte wissen ob es einen besseren Weg, dies zu tun.
- Was Sie bereits tun, ist genau das richtige zu tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie awk so:
Mit vim/vi:
Mit GNU sed:
Verwendung von nicht-GNU sed:
awk 'NR==FNR && !h {print;h=1;} NR!=FNR{print}' headerFile mainFile > tmpFile && mv tmpFile mainFIle
Haben Sie bereits akzeptiert eine Antwort, aber ich werde vorschlagen eine weitere Möglichkeit:
sed -i.bak -e '2{x;G};1{h;rheaderFile' -e 'd}' mainFile
&&
? Nicht der Ansatz, den Sie begann mit look eine Größenordnung deutlicher als jeder der Vorschläge, die Sie bekommen?cat a b > c && mv c b
als Sie Schritte mit ist genau die richtige Sache zu tun, in diesem Fall für Klarheit, Kürze und Robustheit. Die meisten, wenn nicht alle, der alternative Lösungen, die vorgeschlagen werden, nicht nur kryptisch, sondern haben heimtückische vorbehalten und kann beschädigt Ihrer original-Datei.Wenn Sie mit vim, check-out ultisnips. Sie können dies tun, und viel mehr.
E. g., Ich habe definiert, der folgende Codeausschnitt hinzufügen einer public-domain-header in eine Datei:
Verwenden Sie dieses snippet, füge ich
pd
am Anfang einer Zeile in vim und Treffer<tab>
. Dies erweitert das snippet Befüllen in das aktuelle Datum in der$Date$
tag, und füllt den Dateinamen (mitexpand
). Dann hebt Sie den Namen des Autors, das ist die erste variable, die es mir erlaubt, es zu ändern, wenn nötig. Dies wird automatisch alle weiteren Instanzen dieser Variablen. Mit<ctrl>j
nimmt mich an die folgende variable, der Autor der E-Mail-Adresse, die auch geändert werden kann, falls gewünscht.Können Sie vimscript Befehle (zwischen Anführungszeichen und vorangestellt
!v
). Wenn Ihr vim kompiliert mit Python-Unterstützung können Sie auch Python-code mit!p
.