Wyszukiwanie w witrynie

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.