Imprima no máximo n caracteres por linha, mas sem corte

0

Eu tenho este problema: Eu tenho um arquivo de texto, onde cada linha tem diferentes números de caracteres, como este:

aaaa
bbbbbbbbb
cc

Agora, desejo gerar um novo arquivo de texto, no qual uma linha tenha no máximo N caracteres, mas nenhum conteúdo está faltando. Então, algo assim (por exemplo, cada linha deve ter no máximo 4 caracteres):

aaaa
bbbb
bbbb
b
cc

Isso é possível com sed , awk , grep ou outras ferramentas em combinação com uma única linha?

    
por kristian 27.03.2017 / 19:48

4 respostas

3
fold -w4 yourfile

Saída

aaaa
bbbb
bbbb
b
cc
    
por 27.03.2017 / 19:54
3

Perl

perl -lne 'print for /.{1,4}|^$/g' yourfile

Sed1

sed -e '
   s/..../&\n/
   /\n$/P;//d
   P;D
' yourfile

Sed2

sed -e '
   s/..../&\n/g
   s/\n$//
' yourfile

Bash

while IFS= read -r l; do
   case $l in '' ) echo; continue ;; esac
   while case $l in '' ) break ;; esac; do
      echo "${l:0:4}"
      l=${l:4:${#l}}
   done
done < yourfile
    
por 27.03.2017 / 20:21
2

Todo o tempo grep clássico:

$ echo "$a"
aaaa
bbbbbbbbb
cc

$ echo "$a" |egrep -o '(.){1,4}'
aaaa
bbbb
bbbb
b
cc
    
por 27.03.2017 / 21:40
0
sed 's_\(....\).*__' /path/to/input

Qualquer coisa menor do que quatro caracteres não será tocada; mais tempo será truncado.

    
por 27.03.2017 / 19:51