Apare linhas para um comprimento específico [duplicado]

0

Eu tenho um arquivo com muitas linhas e quero cortar cada linha para ter 80 caracteres de comprimento. Como eu pude fazer isso?

Eu já filtrei linhas com menos de 80 caracteres, então agora tenho um arquivo que tem linhas com mais de 80 caracteres e quero aparar cada linha para que todas sejam exatamente 80. Em outras palavras, quero para preservar os primeiros 80 caracteres em cada linha e remover o resto da linha.

    
por mah 30.05.2018 / 19:26

4 respostas

2

Você pode usar o comando cut :

cut -c -80 file

com grep :

grep -Eo '.{80}' file
    
por 30.05.2018 / 19:29
1

Para cortar (truncar) cada linha do arquivo (e ter a saída no atual console) use:

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

Se o que você deseja é inserir uma nova linha no caractere 80 e dividir cada linha com mais de 80 caracteres em mais linhas, use:

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

Se você quiser dividir apenas em espaços (palavras inteiras), use:

fold -sw 80 infile

Para todas as soluções acima, redirecione para algum outro arquivo como >outfile (não use o mesmo nome, isso não funcionará) no final de qualquer comando para armazenar o resultado em outfile . Exemplo:

fold -sw 80 infile > outfile
    
por 30.05.2018 / 19:56
0

com sed :

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

com cut :

cut -c -80 file 
    
por 30.05.2018 / 19:33
0

Usando o AWK:

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

Usando cut:

 cut -c -80 file.txt

Usando colrm:

colrm 81 file.txt

Usando sed:

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

Usando o grep:

grep -Eo '.{80}' file.txt
    
por 30.05.2018 / 20:27