Jak odczytać dane wejściowe Awk ze STDIN w systemie Linux — część 7
W poprzednich częściach serii narzędzi Awk zajmowaliśmy się odczytywaniem danych wejściowych głównie z plików, ale co zrobić, jeśli chcesz czytać dane wejściowe z STDIN.
W tej części 7 serii Awk przyjrzymy się kilku przykładom, w których można filtrować dane wyjściowe innych poleceń zamiast czytać dane wejściowe z pliku.
Zaczniemy od narzędzia dir, które działa podobnie do polecenia ls, w pierwszym przykładzie poniżej używamy wyniku polecenia dir -l
jako danych wejściowych dla Awk w celu wydrukowania nazwy użytkownika, nazwy grupy i plików właściciela /jest właścicielem w bieżącym katalogu:
dir -l | awk '{print $3, $4, $9;}'
Spójrz na inny przykład, w którym używamy wyrażeń awk. Tutaj chcemy wydrukować pliki należące do użytkownika root, używając wyrażenia do filtrowania ciągów znaków, jak w poleceniu awk poniżej:
dir -l | awk '$3=="root" {print $1,$3,$4, $9;} '
Powyższe polecenie zawiera operator porównania (==)
, który pomaga nam odfiltrować pliki w bieżącym katalogu, których właścicielem jest użytkownik root. Osiąga się to za pomocą wyrażenia $3== ”root”
.
Przyjrzyjmy się innemu przykładowi użycia operatora porównania awk w celu dopasowania określonego ciągu znaków.
Tutaj użyliśmy narzędzia cat do przeglądania zawartości pliku o nazwie tecmint_deals.txt i chcemy przeglądać tylko transakcje typu Tech, więc uruchomimy następujące polecenia:
cat tecmint_deals.txt
cat tecmint_deals.txt | awk '$4 ~ /tech/{print}'
cat tecmint_deals.txt | awk '$4 ~ /Tech/{print}'
W powyższym przykładzie użyliśmy operatora porównania wartość ~ /pattern/
, ale istnieją dwa polecenia, które mają na celu wydobycie czegoś bardzo ważnego.
Kiedy uruchomisz polecenie ze wzorcem tech, nic nie zostanie wydrukowane, ponieważ nie ma transakcji tego typu, ale w przypadku Tech otrzymasz oferty o wartości wpisz Technologia.
Dlatego zawsze należy zachować ostrożność podczas korzystania z tego operatora porównania, jak widzieliśmy powyżej, rozróżniana jest wielkość liter.
Zawsze możesz zamiast tego użyć wyniku innego polecenia jako danych wejściowych dla awk, zamiast czytać dane wejściowe z pliku, jest to bardzo proste, jak sprawdziliśmy w powyższych przykładach.
Mam nadzieję, że przykłady były wystarczająco jasne i zrozumiałe. Jeśli masz jakiekolwiek wątpliwości, możesz wyrazić je w sekcji komentarzy poniżej i pamiętaj, aby sprawdzić następną część serii, w której przyjrzymy się funkcjom awk takie jak zmienne, wyrażenia numeryczne i operatory przypisania.