Como colocar dados limitados entre parênteses em uma única linha?

1

Estou tentando trabalhar com um arquivo de texto grande para colocar dados delimitados por parênteses em uma única linha. Atualmente, ele é dividido em várias linhas ...

O que parece:

(123456
'abcdef'
'a1b2c3d4'
'1234567890'
0)
(789012
'zyxwv'
'987gha871'
'987654828'
0)

O que eu preciso que pareça:

(123456 'abcdef' 'a1b2c3d4''1234567890' 0)
(789012 'zyxwv''987gha871''987654828' 0)

Tentando derrubar isso usando um sed-one liner, mas não tendo muita sorte. Alguma idéia?

Obrigado !!

    
por CrocodileCurse 05.09.2017 / 20:10

2 respostas

1
Solução

awk :

awk '{ printf "%s%s",$0,($0~/\)$/)? ORS:FS }' file

A saída:

(123456 'abcdef' 'a1b2c3d4' '1234567890' 0)
(789012 'zyxwv' '987gha871' '987654828' 0)
    
por 05.09.2017 / 20:45
1

Uma solução Perl :

perl -nle 'if (/\(/../\)/) {push @a,$_;if (m/\)/) {print "@a";@a=()}}' file

Isso usa o operador intervalo ("..") para capturar qualquer coisa que seja vista entre (incluindo) parênteses abertos e um fechamento. Quando um parêntese de fechamento é detectado, o conteúdo do array é impresso e o array é limpo para o próximo ciclo.

    
por 05.09.2017 / 21:31

Tags