cat texto | grep -o '[(][^)]*[)]' | head -1 [(] ....... usando o grupo [] pego o parêntese de abertura [^)] ...... outro grupo pega tudo menos parêntese de fechamento * ......... em qualquer quantidade [)] ....... seguido por um parêntese de fechamento
com o comando head filtro a primeira ocorrência --- Em [email protected], Elder Marco <elderma...@...> escreveu > > Caros, > > Dei uma pesquisada na lista e na internet e não sei se usei os termos > corretos de pesquisa, mas não cheguei a achar algo sobre como extrair um > trecho de uma linha com o sed, exceto por um que não compreendi no site > do tobias. Creio que eu esteja errando na expressão regular (que estou a > aprender) ou algum "macete" do sed que não estou levando em conta (que > também estou a aprender). > > Vejam: > $ string="Este é um {texto} com algumas (palavras) entre {chaves} e > outras entre (parênteses)" > > Então queria pegar a primeira ocorrência de uma palavra entre > parênteses: > > $ echo "$string" | sed '/\({.*?}\)/\1/' > Este é um {texto} com algumas (palavras) entre {chaves} e outras entre > (parênteses) > > $ echo "$string" | sed '/\(\{.*?\}\)/\1/' > sed: -e expressão #1, caractere 17: Expressão regular precedente > inválida > > E quanto a pegar uma palavra entre parênteses, não sei como proceder. > > Teriam alguma sugestão? E se eu quiser pegar todas as ocorrências? > E aproveitando, algum material na internet para me indicar a respeito de > maneira que eu possa me aprofundar mais? > > > -- > Elder Marco > > GNU/Linux User: #471180 > > "Contra o positivismo, que pára perante os fenômenos e diz: 'Há apenas > fatos', eu digo: 'Ao contrário, fatos é o que não > há; há apenas interpretações'. "(Nietzsche) > > > [As partes desta mensagem que não continham texto foram removidas] >
