Gibt es eine einfachere Möglichkeit, das Folgende zu tun? Vielleicht ein einzelner Befehl, der den Text ersetzt, wenn er existiert, wenn er keinen Text an die Datei anhängt. Ich muss dies für verschiedene Dateien tun und möchte einen Weg finden, um in eine Funktion einzusteigen. Die Zeilenformatierung wird leicht variieren zwischen, ich setze 2 Beispiel unten.Wie erstelle ich eine Bash-Funktion, um die Zeile zu ersetzen oder an die Datei anzufügen
#If grep exists then sed line, else echo to end of file
grep -q '^sometext' /file1.txt && sed -i "" "s/^sometext.*/sometext $newvar/" /file1.txt || echo "sometext $newvar" >> /file1.txt
grep -q '^someothertext' /file2.txt && sed -i "" "s/^someothertext.*/someothertext=$othernewvar/" /file1.txt || echo "someothertext=$othernewvar" >> /file1.txt
Wäre es jemals möglich, * mehr * als einen Ersatz zu machen? Ich denke, es sollte in 'sed' möglich sein, ein Skript zu schreiben, das sowohl den Ersetzungscode * als auch den Append-Code enthält, aber der Append-Code wird nur erreicht, wenn kein Austausch stattfindet. – chepner