Recortar líneas a una longitud específica

Recortar líneas a una longitud específica

Tengo un archivo con muchas líneas y quiero recortar cada línea para que tenga 80 caracteres de longitud. ¿Cómo podría hacer esto?

Ya he filtrado líneas de menos de 80 caracteres, así que ahora me queda un archivo que tiene líneas de más de 80 caracteres de longitud y quiero recortar cada línea para que todas tengan exactamente 80. En otras palabras, quiero preservar el primeros 80 caracteres en cada línea y elimine el resto de la línea.

Respuesta1

Puedes usar el cutcomando:

cut -c -80 file

Con grep:

grep -Eo '.{80}' file

Respuesta2

UsandoAWK:

awk '{print substr($0,1,80)}' file.txt

Usandocortar:

 cut -c -80 file.txt

Usandocolrm:

colrm 81 file.txt

Usandosed:

sed 's/^\(.\{80\}\).*$/\1/' file.txt

Usandogrupo:

grep -Eo '.{80}' file.txt

Respuesta3

Para cortar (truncar) cada línea del archivo (y tener el resultado en la consola actual) use:

cut -c -80 infile               # cut only counts bytes (fail with utf8)
grep -o '^.\{1,80\}' infile
sed 's/\(^.\{1,80\}\).*/\1/' infile

Si lo que desea es insertar una nueva línea en los 80 caracteres y dividir cada línea de más de 80 caracteres en más líneas, use:

fold -w 80 infile            # fold, like cut, counts bytes.

Si desea dividir sólo en espacios (palabras completas), utilice:

fold -sw 80 infile

Para todas las soluciones anteriores, redirija a algún otro archivo como >outfile(no use el mismo nombre, eso no funcionará) al final de cualquier comando para almacenar el resultado en formato outfile. Ejemplo:

fold -sw 80 infile > outfile

Respuesta4

Usando Raku (de soltera Perl6)

~$ raku -ne 'put ~$0 if m/ ^^(. ** 80) /;'

PRODUCCIÓN:

the of and to in a is that for it as was with be by on not he i this are or his
the of and to in a is that for it as was with be by on not he i this are or his
the of and to in a is that for it as was with be by on not he i this are or his
the of and to in a is that for it as was with be by on not he i this are or his
[TRUNCATED]

El código anterior devuelve los primeros 80 caracteres de una línea (la ^^aserción de ancho cero significa "inicio de línea"). Si la línea es demasiado corta, no se devuelve nada. RegresarHASTA80 caracteres, utilice el formulario ** 1..80.

La numeración de capturas comienza con $0. Obtenga una lectura del número de caracteres devueltos agregando .charsa la ~$0variable de captura:

~$ raku -ne 'put ~$0.chars if m/ ^^(. ** 80) /;' ~/top50.txt
80
80
80
80
[TRUNCATED]

HTH.

https://raku.org

información relacionada