Como substituir string entre parênteses usando o sed

1

Eu tenho a seguinte string:

col1|col2|col3+++++++++++A|1|a B|2|b C|3|c D|4|d  (3 rows)

Eu quero dividir essa string para remover a string no começo até o último símbolo + e depois remover o final que é (linhas XYZ)

, então a string se torna A|1|a B|2|b C|3|c D|4|d Agora, quero dividir essa string em vários arrays semelhantes a este

A 1 a 
B 2 b 
C 3 c 
D 4 d

para que eu possa iterar em cada linha usando loop para fazer algum processamento.

Como posso fazer isso usando sed ou grep?

Eu tentei isso na primeira passagem, mas não funcionou

echo $string | sed 's/([0-9])rows//' | sed 's/[^+]//'

mas não funcionou.

    
por user330612 28.01.2016 / 07:49

2 respostas

1

Por expansão de variável no bash:

str="col1|col2|col3+++++++++++A|1|a B|2|b C|3|c D|4|d  (3 rows)"
str=${str%  (*}
str=${str##*+}
str=${str// /
}
str=${str//|/ }

Ou por sed

sed 's/.*+\(.*\S\)\s\+(.*//;y/ |/\n /' <<\eof
col1|col2|col3+++++++++++A|1|a B|2|b C|3|c D|4|d  (3 rows)
eof
A 1 a
B 2 b
C 3 c
D 4 d
    
por 28.01.2016 / 11:21
2
echo "col1|col2|col3+++++++++++A|1|a B|2|b C|3|c D|4|d  (3 rows)" |sed -e 's/.*\++//; s/d .*/d/; s/|\(.\)|\(.\)\s*/  \n/g'

A 1 a
B 2 b
C 3 c
D 4 d
    
por 28.01.2016 / 10:43