shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Usando variáveis do script dentro do awk


From: Cyolfi Cyro
Subject: Re: [shell-script] Usando variáveis do script dentro do awk
Date: Fri, 14 Nov 2014 07:27:38 -0200

A sua solução também funcionou perfeitamente Julio.

Muito obrigado!!!

Cyro Ciolfi
Divisão de Suporte Computacional - CTI Renato Archer
Professor - Metrocamp

2014-11-13 15:42 GMT-02:00 'Julio C. Neves' address@hidden [shell-script] <address@hidden>:
 

Olá Cyro,
já vi vc agradecer às respostas que recebeu e isso significa que seu problema está resolvido, porém só pra que vc entenda o que houve, vou te dar uma explicação.

Como vc sabe, as variáveis do Shell são precedidas por um $ e as do awk, por ser outra linguagem e com outra sintaxe, não usa este $. Então para que o seu exemplo que funcionava com uma constante, continuasse funcionando com uma variável, bastava que vc exibisse-a ao shell para que ele substituísse-a por seu valor antes da execução do awk. Usando o exemplo do Casanova:
$ cat ramal
abc;6166;def;teste;
abc;6165;def;teste;
abc;6167;def;teste;
abc;6168;def;teste;
essa;tem;6166;teste;
essa;nao;tem;6166;fim;
essa;tem;6167;teste;
essa;nao;tem;6168;fim;
essa;tem;6168;teste;
essa;nao;tem;6168;fim;
essa;tem;6169;teste;
essa;nao;tem;6169;fim;
$ awk -F";" '{ if ($3 ~ /6166/) print }' ramal # O seu exemplo que funciona
essa;tem;6166;teste;
$ Num=6166
$ awk -F";" '{ if ($3 ~ /'$Num'/) print }' ramal # Seu exemplo funcionando com variável do Shell
essa;tem;6166;teste;

Repare que fechei os apóstrofos antes de $Num e abri-os novamente logo após, deixando o $Num sem proteção para que o Shell a expandisse, trocando-a por seu valor.

Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 10 a 14/11
São Paulo 4Linux 24 a 28/11
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 13 de novembro de 2014 08:49, Cyolfi Cyro address@hidden [shell-script] <address@hidden> escreveu:

 

Olá pessoal,

Meu problema é o seguinte, imagine a seguinte variável:

RAMAL=6166

Eu quero listar todas as linhas aonde o ramal 6166 for encontrado na terceira coluna com delimitador ";".

Cheguei a conclusão que a melhor solução seria o awk, e fiz o seguinte teste:

awk -F";" '{ if ($3 ~ /6166/) print }' ARQUIVO

Funcionou perfeito!!! 

O problema é que o ramal irá variar dentro de um loop e por isso no lugar do 6166 eu gostaria de colocar uma variável.

Já tentei:

awk -v NUM="${RAMAL}" -F";" '{ if ($3 ~ /NUM/) print }' ARQUIVO

e outra tentativas que não me devolvem resultado algum.

Isso me leva a questão, o awk é a melhor forma de se procurar valor em colunas ou existe forma melhor?

O que estou errando no comando?

Grato por qualquer dica!!!

Cyro Ciolfi
Divisão de Suporte Computacional - CTI Renato Archer
Professor - Metrocamp




reply via email to

[Prev in Thread] Current Thread [Next in Thread]