sed script para limitar colunas a 15 caracteres

0

Tentei envolver meu regex foo com isso, mas não estava indo muito bem. Por favor, ajude:

precisa do script sed para formatar o arquivo:

844388240 920009 XXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYY
800450220 910003 AAAAAAAAAAAAAAAAAA BBBBB
736458376 947883 HHHH GGGGG
800450220 910003 AAAAAAAAAAAAAAAAAA YYYYYYYYYYYYYYYYYYYYYYY

9 dígitos (espaço) 6 dígitos (espaço) até 15 caracteres (espaço) até 15 caracteres

resultar em:

844388240 920009 XXXXXXXXXX YYYYYYYYYYYYYYY
800450220 910003 AAAAAAAAAAAAAAA BBBBB
736458376 947883 HHHH GGGGG
800450220 910003 AAAAAAAAAAAAAAA YYYYYYYYYYYYYYY

cada uma das colunas 3 e 4 são truncadas em 15 caracteres, no entanto, valores mais curtos são transmitidos intocados.

    
por Big DR 10.11.2016 / 19:06

2 respostas

4

Uma maneira de fazer isso com sed :

sed 's/\([^ ]\{15\}\)[^ ]*//g'

Mesma coisa com perl :

perl -lpe 's/\S{15}\K\S*//g'

com awk :

awk '{ for(i=1; i<=NF; i++) $i=substr($i, 0, 15)} 1'

com vim :

:%s/\v\S{15}\zs\S*//g

com cut :

tr ' ' '\n' <file.txt | cut -b1-15 | paste -d ' ' - - - -
    
por 10.11.2016 / 19:16
0
sed -r '
s/ /\n/g;
s/^(.{,15}).*$//M3; 
s/^(.{,15}).*$//M4; 
s/\n/ /g
' file
    
por 20.01.2017 / 17:00