.
.
Pessoas ... preciso retornar um texto de um arquivo ... padrão, começa com a variável + ':' e termina antes da próxima vírgula ... se não me engano o Marcelo uma vez postou um AWK curtinho que era mais ou menos isso.
Mas isso tem a desvantagem de usar dois comandos em vez de apenas um.
As duas próximas usam apenas um comando, mas usam recursos das versões GNU do sed e do grep, que podem não estar universalmente disponíveis em sistemas que não usem as versões GNU desses programas.
sed -n "s/^\(${variavel}:[^,]*\).*/\1/;T;p" arquivo
comando_reador_do_texto | sed -n "s/^\(${variavel}:[^,]*\).*/\1/;T;p"
Como você falou em usar awk, eis uma solução com ele (as barras invertidas antes dos sinais "$" são para passar o sinal para o próprio awk, em vez de deixá-los ser interpretados pelo shell).
Todas as soluções acima têm o problema de que o valor de variavel não pode incluir caracteres que possam afetar a sintaxe de comando invocado (por exemplo, se o valor da variável contiver o caráter "/", que é usado como delimitador das expressões regulares, todos os comandos acima vão para o vinagre). Se você precisar de tais caracteres, terá de dar um jeito de escapá-los antes de os submeter aos comandos externos.
O seguinte comando usa a função quotemeta() do Perl para tratar de modo seguro o valor da sua variável.
... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)
3. Re: Retornar texto entre
Mauriciodezusa Debian
Post recolhido
Enviado em 13/01/2019 - 12:40h
paulo1205 escreveu:
Várias maneiras.
...
Valeu pelas ideias Paulo, mas eu queria era ver se alguém postava um comando bem curto quer eu tenho certeza que existe, a princípio o que fiz foi substituir virgulas por quebras, depois eu faço a busca.
sed 's/,\ /\n/g' $ARQ | grep "$VAR:"
Esse comando resolve minha vida em 90% pois existem ocorrências que são precedidas por uma string, aí tenho que fazer um outro sed para eliminar essa string .
sed "s,$TXT,,g" $ARQ | sed 's/,\ /\n/g' | grep "$VAR:"
------------------------------------------| Linux User #621728 |-----------------------------------------
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"
------------------------------------------| Linux User #621728 |-----------------------------------------
4. Re: Retornar texto entre
paulo1205usa Ubuntu
Post recolhido
Enviado em 13/01/2019 - 23:34h
Mais curto do que a versão com “grep -o”?
Se pode haver outros textos antes da string que você quer, você pode tirar o sinal “^” das expressões regulares que eu mostrei, ou trocá-lo por alguma coisa que lhe atenda. Por exemplo, a versão com “grep -o” poderia ser trocada para algo como “egrep -o "\\b$VAR:[^,]*"” (só um grep, sem necessidade de chamar também o sed), e na versão com Perl bastaria trocar o “^” por “\b”.
... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)
5. Re: Retornar texto entre
msoliverusa Debian
Post recolhido
Enviado em 14/01/2019 - 13:58h
Mauriciodez escreveu:
.
.
Pessoas ... preciso retornar um texto de um arquivo ... padrão, começa com a variável + ':' e termina antes da próxima vírgula ... se não me engano o Marcelo uma vez postou um AWK curtinho que era mais ou menos isso.
Abçs
.
.
.
.
Pessoas ... estou terminando umas coisas e me parece que o cenário apresentado aqui por mim vai ter que ser alterado ... vou deixar o tópico em off por enquanto.
------------------------------------------| Linux User #621728 |-----------------------------------------
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"
------------------------------------------| Linux User #621728 |-----------------------------------------