Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-05-24 10:23:33

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Przekazanie zmiennej do awk ...

Witam
Jest taka sytuacja, w skrypcie test.sh tworzę sobie zmienną

Kod:

 TEST="$1"

która jest pobierana jako argument skryptu.
Mam plik test, w którym mam następujące dane:
AAA|Tom
AAA|Kris
BBB|Tony
Skrypt wywołuję jako test.sh AAA i chciałbym aby na wyjściu pokazały mi się wiersze, gdzi ena pierwszym miejscu są litery AAA
czyli tworzę pętlę:

Kod:

TEST="$1"
for NAME in `cat test | (awk -F "|" '{if (index($1, "$TEST")) print $2}')`
do
 echo "${HOST}"
done

Niestety po wywołaniu skryptu, mam pusty ekran jak w awk podstawie bezpośrednio wpis AAA zamiast $TEST to skrypt ładnie tworzy wynik. Co robię nie tak
Pozdrawiam

Offline

 

#2  2011-05-24 10:58:54

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: Przekazanie zmiennej do awk ...

1. To nie ma prawa działać, bo w pętli deklarujesz zmienną NAME a odwołujesz się do zmiennej HOST. Musisz się zdecydować.
2. To nie ma prawa działać, ponieważ w awk treść skryptu otaczasz pojedynczym cudzysłowem, co znaczy że powłoka w ogóle nie interpretuje tego fragmentu kodu. Przekazuje go od razu do awk, bez podstawienia w miejsce $TEST wartości zmiennej.
3. Masz dwa wyjścia:
a)

Kod:

for NAME in $(cat test | (awk -F "|" '{if (index($1, "'$TEST'")) print $2}'))

(zwróć uwagę na pojedyncze i podwójne cudzysłowy)
b)

Kod:

for NAME in $(cat test | (awk -v TEST="$TEST" -F "|" '{if (index($1, TEST)) print $2}'))
# albo -v TEST="$1", jeżeli ta zmienna nigdzie indziej nie jest Ci potrzeba

A tak na marginesie, mnożysz koty:

Kod:

for NAME in $(awk -F "|" '{if (index($1, "'$TEST'")) print $2}' test)

Offline

 

#3  2011-05-24 11:12:25

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: Przekazanie zmiennej do awk ...

Podziękował, dużo pracy przede mną

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)