¿Cuál ' es la mejor manera de editar un archivo con un script bash?

Usando / bin / bash en RHEL 5.8 y quiero automatizar la edición de un archivo. Necesito el script para buscar el archivo y reemplazar una línea en el archivo. Ejemplo de línea:

Other line Current date 01121990 Other line 

Busque esta línea y reemplace la cadena de fecha con una fecha predeterminada. No puedo hacer eco en un archivo nuevo e ingresar mi fecha, ya que este archivo se copiará de un archivo específico del servidor. ¡Gracias!

Comentarios

  • sed sería la herramienta de elección aquí …

Respuesta

your_date="your desired date" sed -i "s/^Current date.*/Current date ${your_date}/" /path/to/file 

Esa es la forma más sencilla. Esto supone que todas las líneas que contienen una fecha para reemplazar también son las únicas líneas que comienzan con «Fecha actual».

Tenga en cuenta que el nivel de usuario que ejecuta este comando también debe tener permiso para editar ese archivo.

-i significa edición en línea, lo que significa que está editando el archivo directamente.

^Current date.* 

Significa todas las líneas que comienzan con: Fecha actual y termina en cualquier cosa. En otras palabras, reemplace toda la línea con lo que está en la segunda parte /…/ de sed.

Se usa Double «alrededor de la declaración sed para que las variables se usen como variables, no cadenas.

Comentarios

  • Gracias Lizardx que ' es exactamente lo que necesito, lo probé y funciona muy bien
  • Me alegro mucho de escucharlo.

Responder

ed también puede realizar edición de archivos en el lugar. El número de inodo del archivo editado permanece sin cambios.

file="/path/to/file" your_date="your desired date" ls -i "$file" printf "%s\n" H ",g/^Current date.*/s//${your_date}/" wq | ed -s "$file" ls -i "$file" 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *