Ler valor atribuido a uma variavel com o awk [RESOLVIDO]

1. Ler valor atribuido a uma variavel com o awk [RESOLVIDO]

Antonio Amazonas
antonioamazonas

(usa Debian)

Enviado em 10/06/2015 - 10:35h

olá a todos.
Sou Novo no multiverso LINUX e novo também no fórum, comecei a usar o Ubuntu modo texto e estou tendo algumas dificuldades.
estou com alguns exercícios da faculdade que utiliza o "awk"

Ex:
tenho uma lista que se chama "nomes.dat" (a extensão é somente um parâmetro organizacional) com nomes e Ids de usuários ex:

100 Suzana Alves
101 Maria joaquina
102 Castro Alves
103 Suzana Vieira

Tenho outro arquivo chamado "telefones.dat" com as seguintes informações:

1000 100 1111-1111
1001 100 2222-2222
1002 100 3333-3333
1003 101 4444-4444
1004 102 5555-5555
1005 103 6666-6666
1006 103 7777-7777

O que o professor pede é que seja feito um código que receba como parametro um nome e imprima as linhas do arquivo nomes.dat que o contenham
2 outro que faça a mesma coisa mas que só imprima os nomes.
3Outro qe receba como primeiro parâmetro um numero da primeira coluna e imprima as linhas do arquivo telefones,dat que a segunda coluna contenham esse código
e tem outras variações mas que se eu conseguir fazer um ou dois, creio que consiga desenvolver os outros.

estudando o comando "awk" percebi que se eu digitasse :

awk -F " "'/jorge/ {print $2,$3;}' nomes.dat

Ele me retornava o nome "jorge amado" do arquivo nomes.dat

comecei a fazer o código assim:


#!/bin/sh

read -p " Digite o nome do contato e pressione <ENTER> " CONTATO
echo " Buscando dados de $CONTATO, por favor aguarde..."
slep 2
clear

BUSCAR=`awk -F " "'$CONTATO {print $2,$3;}' nomes.dat`
echo "$BUSCAR"

mas ao fazer isso o codigo retorna erros .

desejo saber com faço para que o comando awk leia o conteúdo armazenado na variável CONTATO e busque no arquivo nomes.dat e me retorne a linha correspondente ao nome e sobrenome do contato, armazenando na variavel BUSCAR, e depois imprima em tela.
Desculpem caso tenha postado em uma área indevida.
Agradeço a todos!
Cordialmente:
Antonio Amazonas


  


2. Re: Ler valor atribuido a uma variavel com o awk [RESOLVIDO]

Fernando Eckhardt Valle
pherde

(usa Slackware)

Enviado em 10/06/2015 - 11:03h


Script para sua dúvida do final do post:

#!/bin/bash
echo "Digite um nome"
read contato
cat nomes.dat | awk -F " " '{if ($2 == "'$contato'") print }'


Atente que a váriavel contato dentro do if do awk está dentro de aspas simples, que está dentro de aspas duplas. Agora, ficaria mais fácil usar um grep para filtrar e mostrar as linhas com os nomes pesquisados.



3. Deu erro

Antonio Amazonas
antonioamazonas

(usa Debian)

Enviado em 10/06/2015 - 12:08h

[quote]pherde escreveu:


Script para sua dúvida do final do post:

#!/bin/bash
echo "Digite um nome"
read contato
cat nomes.dat | awk -F " " '{if ($2 == "'$contato'") print }'


Atente que a váriavel contato dentro do if do awk está dentro de aspas simples, que está dentro de aspas duplas. Agora, ficaria mais fácil usar um grep para filtrar e mostrar as linhas com os nomes pesquisados.


Ola nobre pherde, fiz das duas formas e deu erro, atribui ao meu código a dica mas deu erros e refiz o código somente com as suas linhas e apresentou o mesmo erro no awk.

o quer pode ser?





4. Re: Ler valor atribuido a uma variavel com o awk [RESOLVIDO]

Thiago Martins
thinomar

(usa Debian)

Enviado em 10/06/2015 - 13:34h

Primeiro:
read c
awk -F " " '{if($2 == "'$c'") print}' ./nomes.dat

Segundo:
read c
awk -F " " '{if($2 == "'$c'") print $2" "$3}' ./nomes.dat

--
sudo make me a sandwich


5. Re: Ler valor atribuido a uma variavel com o

Antonio Amazonas
antonioamazonas

(usa Debian)

Enviado em 10/06/2015 - 13:48h

thinomar escreveu:

Primeiro:
read c
awk -F " " '{if($2 == "'$c'") print}' ./nomes.dat

Segundo:
read c
awk -F " " '{if($2 == "'$c'") print $2" "$3}' ./nomes.dat

--
sudo make me a sandwich



Muito obrigado meu nobre, funcionou!
ficou assim:

BUSCAR=`awk -F " " '{if($2 == "'$CONTATO'") print $2" "$3}' ./nomes.dat`
Coloquei o comando em crases para ser atribuido, e impresso depois, muito obrigado.

Viva o LINUX!





6. Re: Ler valor atribuido a uma variavel com o awk [RESOLVIDO]

Thiago Martins
thinomar

(usa Debian)

Enviado em 10/06/2015 - 15:07h

Epa, que bom que conseguiu. Se tiver mais alguma dúvida na criação dos outros scripts, só perguntar.
Aliás, pra render uma nota a mais, fazer com um menuzinho seria legal. Fazer uma função menu e criar um loop infinito dentro para executar até que você saía, e depois colocar um case pra direcionar pra função ou script certo.
--
sudo make me a sandwich