
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 sed
o awk
o split
para 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 separator
como 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 awk
por la posibilidad de usar variables fácilmente. Si desea dividir su línea basándose en otrasseparadores, simplemente puedes cambiar el separator
valor a otro.
Si desea eliminar separator
de 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}'