$ sed 's/([^)]*)//g' file
x + chrX 15362 15364 + 100 * * * 100 * 100
y + chrX 153626 153626 + 100 98.56 100 100 100 4
Aqui, usamos sed
para remover qualquer parêntese na entrada. A expressão ([^)]*)
corresponde a um parêntese à esquerda seguido por qualquer número de caracteres parênteses não à direita (ou seja, o número), seguido por um parêntese à direita. Você também pode usar ([0-9]*)
aqui.
$ sed 's/[^[:blank:]]*(\([^)]*\))//g' file
x + chrX 15362 15364 + 3 0 0 0 5 0 1
y + chrX 153626 153626 + 80 79 40 47 88 23
Aqui, excluímos o bit antes dos parênteses e dos parênteses, e substituímos tudo isso pela coisa que estava dentro dos parênteses. O material antes do (
ser correspondido por [^[:blank:]]*
, ou seja, qualquer número de caracteres não em branco, seguido pela mesma expressão do primeiro comando sed
, mas capturando o conteúdo entre (
e )
. A string capturada é referenciada na parte de substituição do comando por .
Seu comando,
sed -r 's/^.*\((\d+)\)//g'
não funciona corretamente porque \d
é uma PCRE (uma expressão regular semelhante a Perl). A substituição de \d
por [0-9]
ou [[:digit:]]
não faria com que funcionasse melhor, pois substituiria a linha inteira pelo número dentro do último parêntese.