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
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"
sed
sería la herramienta de elección aquí …