GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Eine Zeile nur an eine Datei anhängen, wenn sie noch nicht existiert

Halte es einfach :)

grep + Echo sollte genügen:

grep -qxF 'include "/configs/projectname.conf"' foo.bar || echo 'include "/configs/projectname.conf"' >> foo.bar
  • -q sei ruhig
  • -x der ganzen Zeile entsprechen
  • -F Muster ist ein einfacher String
  • https://linux.die.net/man/1/grep

Bearbeiten:Vorschläge von @cerin und @thijs-wouters eingefügt .


Versuchen Sie Folgendes:

grep -q '^option' file && sed -i 's/^option.*/option=value/' file || echo 'option=value' >> file

Dies wäre eine saubere, lesbare und wiederverwendbare Lösung mit grep und echo um einer Datei nur dann eine Zeile hinzuzufügen, wenn sie noch nicht existiert:

LINE='include "/configs/projectname.conf"'
FILE='lighttpd.conf'
grep -qF -- "$LINE" "$FILE" || echo "$LINE" >> "$FILE"

Wenn Sie die ganze Zeile abgleichen müssen, verwenden Sie grep -xqF

Fügen Sie -s hinzu um Fehler zu ignorieren, wenn die Datei nicht existiert, indem eine neue Datei mit genau dieser Zeile erstellt wird.


Linux
  1. Führen Sie den Cron-Job nur aus, wenn er nicht bereits ausgeführt wird

  2. open() in Python erstellt keine Datei, wenn sie nicht existiert

  3. Wie erstelle ich eine Datei nur, wenn sie nicht existiert?

  4. grep ohne Pfad/Datei:Zeile anzuzeigen

  5. Wie grep \n in Datei

Wie Grep-Zeilen, die nicht mit „#“ oder „;“ beginnen?

Grep für eine Zeile, die nur 5 oder 6 Zahlen enthält?

Visual File Diff mit Vimdiff – es macht einen Unterschied!

Wie kann man GREP dazu bringen, nur numerische Werte auszuwählen?

Der Linux-Befehl sed ändert die Zieldatei nicht

Zeile NUR zu einer Datei hinzufügen, wenn sie sich nicht bereits in der Datei befindet