GNU/Linux >> Tutoriales Linux >  >> Linux

Agregar una línea a un archivo solo si aún no existe

Solo mantenlo simple :)

grep + eco debería ser suficiente:

grep -qxF 'include "/configs/projectname.conf"' foo.bar || echo 'include "/configs/projectname.conf"' >> foo.bar
  • -q cállate
  • -x coincide con toda la línea
  • -F el patrón es una cadena simple
  • https://linux.die.net/man/1/grep

Editar:incorporó sugerencias de @cerin y @thijs-wouters .


Prueba esto:

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

Esta sería una solución limpia, legible y reutilizable usando grep y echo para agregar una línea a un archivo solo si aún no existe:

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

Si necesita hacer coincidir toda la línea, use grep -xqF

Agregar -s para ignorar los errores cuando el archivo no existe, creando un nuevo archivo con solo esa línea.


Linux
  1. ¿Cómo usar Gzip solo si Thesqldump no da error?

  2. ¿Cómo crear un archivo solo si no existe?

  3. grep sin mostrar ruta/archivo:línea

  4. Cómo grep \n en el archivo

  5. wc -l NO cuenta lo último del archivo si no tiene un carácter de final de línea

El archivo de metadatos no coincide con la suma de verificación:¡error YUM!

¿Grep para una línea que contiene solo 5 o 6 números?

Cadena Grep ¿Dónde la siguiente línea no contiene una cadena?

Visual File Diff con Vimdiff:¡hace la diferencia!

Linux:grep desde ciertas líneas hasta el final del archivo

Grep en un archivo de registro enorme (> 14 GB) ¿solo los últimos x GB?