
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 cut
comando:
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 .chars
a la ~$0
variable de captura:
~$ raku -ne 'put ~$0.chars if m/ ^^(. ** 80) /;' ~/top50.txt
80
80
80
80
[TRUNCATED]
HTH.