Añadido a lo que ya comentaba en Uso sencillo del comando sed podemos hacer un montón de cosas útiles. Más si cabe, cuanto más grande es el fichero que queremos manejar. Como un log que ha crecido desmesuradamente en un proceso semi manual nocturno, ejem.
Un caso particular del uso del sed que necesitaba para examinar cómodamente un log de 2GB era quitar toda la INFO de las acciones correctas para dejar solo las ERROR o WARNING de acciones con problemas, pero yendo solo de línea en línea. Desde macOS 12 el uso es un poco distinto a otras distribuciones Unix.
Para un Linux / Unix normal, sería tan sencillo como buscar el texto de referencia y eliminar esa línea del fichero, haciendo:
$ sed -i '/pattern/d' /path/fichero
Pero en macOS hay que añadir dobles comillas simples al principio.
$ sed -i '' '/pattern/d' /path/fichero
La opción -i se usa solo cuando el cambio quieres que sea permanente.
En mi caso, mi pattern era un inicio concreto de cada línea: ‘/^Scanning file/d’ y en menos de lo que quieres darte cuenta ya tienes el fichero limpio.
Otro caso de uso es el de añadir un texto justo después de la cadena de texto que buscas. Manteniendo el resto de contenido de la línea, independientemente del contenido:
$ sed -i 's/texto_a_buscar/&texto_que_se_añade/' /path/fichero
Un ejemplo práctico es modificar el vhost de apache para añadir un tipo de fichero más a los que ya existen:
$ sed -i 's/jpg|jpeg/&|xod/' vhost.conf
SaludoX