Jak pozwolić AWK używać zmiennych powłoki - część 11

Jak pozwolić AWK używać zmiennych powłoki - część 11

Kiedy piszemy scenariusze powłoki, zwykle dołączamy inne mniejsze programy lub polecenia, takie jak Awk Operacje w naszych skryptach. W przypadku AWK musimy znaleźć sposoby przekazywania niektórych wartości od powłoki do operacji AWK.

Można to zrobić za pomocą zmiennych powłoki w poleceń AWK, aw tej części serii nauczymy się, jak zezwolić AWK na użycie zmiennych powłoki, które mogą zawierać wartości, które chcemy przekazać poleceń AWK.

Być może na dwa sposoby włączenia AWK użycie zmiennych powłoki:

1. Za pomocą cytowania Shell

Spójrzmy na przykład, aby zilustrować, w jaki sposób możesz użyć powłoki cytując, aby zastąpić wartość zmiennej powłoki w poleceniu AWK. W tym przykładzie chcemy wyszukać nazwa użytkownika w pliku /etc/passwd, Filtruj i wydrukuj informacje o koncie użytkownika.

Dlatego możemy napisać test.cii Skrypt z następującą treść:

#!/bin/bash #Read Wejście użytkownika awk "/ $ Username/" 'print $ 0' ' 

Następnie zapisz plik i wyjdź.

Interpretacja polecenia AWK w test.cii skrypt powyżej:

Cat /itp. /Passwd | awk "/ $ Username/" 'print $ 0' ' 

„/ $ nazwa użytkownika/” - Cytując powłokę używaną do zastąpienia wartości zmiennej powłoki nazwa użytkownika W poleceniu AWK. Wartość nazwa użytkownika to wzór, który należy przeszukać w pliku /etc/passwd.

Zauważ, że podwójny cytat jest poza skryptem AWK, „drukuj 0 $”.

Następnie spraw, aby skrypt był wykonywany i uruchom go w następujący sposób:

$ chmod +x test.sh $ ./tekst.cii 

Po uruchomieniu skryptu zostaniesz poproszony o wejście nazwa użytkownika, Wpisz ważny nazwa użytkownika i uderz Wchodzić. Wyświetlisz szczegóły konta użytkownika z /etc/passwd Plik jak poniżej:

Skrypt powłoki, aby znaleźć nazwę użytkownika w pliku hasła

2. Korzystanie z zmiennego przypisania AWK

Ta metoda jest znacznie prostsza i lepsza w porównaniu z metodą jeden powyżej. Biorąc pod uwagę powyższy przykład, możemy uruchomić proste polecenie, aby wykonać zadanie. W ramach tej metody używamy -v opcja przypisania zmiennej powłoki do zmiennej AWK.

Po pierwsze, utwórz zmienną powłoki, nazwa użytkownika i przypisz go nazwa, którą chcemy wyszukać w /etc/passswd plik:

Nazwa użytkownika = „Aaronkilik” 

Następnie wpisz poniższe polecenie i naciśnij Enter:

# cat /etc /passwd | awk -v nazwa = "$ nazwa użytkownika" '$ 0 ~ Nazwa print $ 0' ' 
Znajdź nazwę użytkownika w pliku hasłem za pomocą AWK

Objaśnienie powyższego polecenia:

  1. -v - Opcja AWK, aby zadeklarować zmienną
  2. nazwa użytkownika - jest zmienną powłoki
  3. nazwa - jest zmienną AWK

Przyjrzyjmy się uważnie 0 USD ~ Nazwa Wewnątrz skryptu AWK, „$ 0 ~ Nazwa drukuj 0 $”. Pamiętaj, że kiedy omawialiśmy operatorów porównawczych AWK w części 4 tej serii, jeden z operatorów porównawczych był wartością ~ Wzór, co oznacza: prawda, jeśli wartość pasuje do wzoru.

Wyjście (0 USD) CAT COMME PRUP -COURS DO AWK pasuje do wzoru (Aaronkilik) który jest nazwą, której szukamy /etc/passwd, W rezultacie operacja porównawcza jest prawdziwa. Linia zawierająca informacje o koncie użytkownika jest następnie drukowane na ekranie.

Wniosek

Omówiliśmy ważną sekcję funkcji AWK, która może pomóc nam użyć zmiennych powłoki w poleceniach AWK. Wiele razy napiszesz małe programy lub polecenia AWK w scenariuszach powłoki, a zatem musisz mieć jasne zrozumienie, jak używać zmiennych powłoki w poleceniach AWK.

W następnej części serii AWK zanurzymy się w kolejnej krytycznej sekcji funkcji AWK, czyli instrukcji kontroli przepływu. Bądź więc na bieżąco i nauczmy się i dzielmy.