GNU/Linux >> Linux Esercitazione >  >> Linux

Aggiunta di una riga a un file solo se non esiste già

Sii semplice :)

grep + eco dovrebbe essere sufficiente:

grep -qxF 'include "/configs/projectname.conf"' foo.bar || echo 'include "/configs/projectname.conf"' >> foo.bar
  • -q stai zitto
  • -x abbina l'intera linea
  • -F pattern è una semplice stringa
  • https://linux.die.net/man/1/grep

Modifica:ha incorporato i suggerimenti di @cerin e @thijs-wouters .


Prova questo:

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

Questa sarebbe una soluzione pulita, leggibile e riutilizzabile utilizzando grep e echo per aggiungere una riga a un file solo se non esiste già:

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

Se hai bisogno di abbinare l'intera riga usa grep -xqF

Aggiungi -s per ignorare gli errori quando il file non esiste, creando un nuovo file con solo quella riga.


Linux
  1. Il file di metadati non corrisponde al checksum – Errore YUM!

  2. Grep per una riga contenente solo 5 o 6 numeri?

  3. Grep String Dove la riga successiva non contiene string?

  4. Come fare in modo che GREP selezioni solo valori numerici?

  5. aggiungi riga a un file SOLO se non è già nel file

Visual File Diff con Vimdiff:fa la differenza!

Il comando sed di Linux non modifica il file di destinazione

grep senza mostrare percorso/file:riga

Come grep \n nel file

wc -l NON conta l'ultimo del file se non ha il carattere di fine riga

Grep in un file di registro enorme (> 14 GB) solo l'ultimo x GB?