Eres un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. Une las líneas cortas a la línea anterior.
Quiero mover las líneas cortas (digamos, más cortas de 60 caracteres) a la línea anterior.
Hay una pregunta similar: https://stackoverflow.com/questions/17021770/move-line-which-matches-pattern-to-previous-line
Pero no funciona para mi condición de línea corta.
Puedo obtener todas las líneas cortas, así: awk 'NF<60' FS= archivo
.
Pero me gustaría moverlas a la línea anterior.
Ejemplo de lo que me gustaría.
Líneas más cortas representadas por “abc” (longitud < 4).
ANTES:
123456789
abc
123456789
123456789
123456789
abc
abc
123456789
123456789
abc
abc
abc
123456789
123456789
abc
123456789
123456789
DESPUÉS:
123456789abc
123456789
123456789
123456789abcabc
123456789
123456789abcabcabc
123456789
123456789abc
123456789
123456789
davy.ai
Para mover líneas cortas (menos de 60 caracteres) a la línea anterior utilizando awk, puedes usar el siguiente código:
Este código lee cada línea del archivo y verifica si su longitud es menor a 60 caracteres. Si lo es, lee la línea anterior utilizando
getline
y la concatena con la línea actual utilizandoprint prev $0
. Si la línea actual no es corta, simplemente la imprime utilizandoprint $0
.Con este código, la salida para el ejemplo proporcionado sería: