Comando Bash para dividir una línea de texto en 2 líneas

Comando Bash para dividir una línea de texto en 2 líneas

Quiero esta línea de un archivo de texto.

This is to become line 1 and that is line 2

Se dividirá en 2 líneas, así:

This is to become line 1
and that is line 2

Tenga en cuenta que no quiero editar/cortar/eliminar nada, ni un solo carácter, solo quiero terminar con 2 líneas de texto en lugar de una, y poder decidir dónde debe realizarse la división. ¿Cómo puedo usar sedo awko splitpara hacer esto? Realmente no me importa cuál uso, pero preferiría sed, si es posible...

Respuesta1

Bueno, esto funcionará si intentas dividir la línea en la palabra "y".

echo "This is to become line 1 and that is line 2" | sed 's/and/\nand/g' 
This is to become line 1 
and that is line 2

Tenga en cuenta que su kilometraje puede variar según la versión de sed que esté utilizando.

ACTUALIZAR:

Para obtener la división, simplemente agregue "\n" delante del término/elemento que desea usar como inicio de la segunda línea.

echo "Sun rise: <...strong...>07:24 am<../..strong..><..br ../..> Sun set: <..strong..>07:31 pm<../..strong..><..br.. /..> " | sed 's/Sun set/\nSun set/'
Sun rise: <...strong...>07:24 am<../..strong..><..br ../..> 
Sun set: <..strong..>07:31 pm<../..strong..><..br.. /..> 

Respuesta2

Agrego mi implementación personal usando awk, de tal manera que puedas cambiarla separatorcomo quieras.

echo "line 1 and line 2" | awk -v separator="and" 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s%s", $1,FS,$2}'

Siempre prefiero usar awkpor la posibilidad de usar variables fácilmente. Si desea dividir su línea basándose en otrasseparadores, simplemente puedes cambiar el separatorvalor a otro.

Si desea eliminar separatorde la segunda línea (quiero decir, no desea leer "y línea 2", pero sólo "línea 2"):

echo "line 1 and line 2" | awk -v separator="and " 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s", $1,$2}'

información relacionada