Jak używać AWK do drukowania pól i kolumn w pliku
- 676
- 183
- Laura Zygmunt
W tej części naszej serii poleceń Linux AWK przyjrzymy się jednej z najważniejszych cech Awk, który jest edycją pola.
Dobrze to wiedzieć Awk Automatycznie dzieli dostarczone linie wejściowe na pola, a pole można zdefiniować jako zestaw znaków oddzielonych od innych pól przez wewnętrzny separator pola.
Pola drukowania AWK i kolumnyJeśli znasz Unix/Linux lub wykonujesz programowanie powłoki bash, powinieneś wiedzieć, jaki wewnętrzny separator pola (Ifs) Zmienna jest. Domyślne ifs w AWK to zakładka i przestrzeń.
W ten sposób działa idea separacji pola Awk: Kiedy napotyka linię wejściową, zgodnie z zdefiniowanymi IFS, pierwszy zestaw znaków to pole pierwszego, które można uzyskać za pomocą za pomocą 1 USD, Drugi zestaw znaków to pole drugie, do którego można uzyskać dostęp 2 USD, Trzeci zestaw znaków to pole trzecie, do którego można uzyskać dostęp 3 USD i tak dalej, aż do ostatniego zestawu postaci (y).
Aby lepiej zrozumieć ten pola AWK, spójrzmy na poniższe przykłady:
Przykład 1: Utworzyłem plik tekstowy o nazwie Tecmintinfo.tekst.
# vi Tecmintinfo.txt # cat tecmintinfo.tekstUtwórz plik w Linux
Następnie z wiersza poleceń próbuję wydrukować Pierwszy, drugi I trzeci Pola z pliku Tecmintinfo.tekst Korzystanie z polecenia poniżej:
$ awk '// wydrukuj 1 $ 2 $ 3' tecmintinfo.tekst Tecmint.Komisja
Z powyższego wyjścia widać, że znaki z pierwszych trzech pól są drukowane na podstawie Ifs zdefiniowane, które jest przestrzenią:
- Pole, które jest „Tecmint.com ” jest dostępny za pomocą
1 USD
. - Pole drugie, co jest "Jest" jest dostępny za pomocą
2 USD
. - Pole trzecie „The” jest dostępny za pomocą
3 USD
.
Jeśli zauważyłeś w wydrukowanym wyjściu, wartości pola nie są oddzielone i w ten sposób domyślnie zachowuje się druk.
Aby wyraźnie wyświetlić wyjście z przestrzenią między wartościami pola, musisz dodać ()
Operator w następujący sposób:
$ awk '// drukuj 1 $, 2 $, 3 $; 'TecMIntinfo.tekst Tecmint.com to
Jedną ważną rzeczą, na którą należy zwrócić uwagę i zawsze pamiętać, że użycie ($)
W Awk różni się od jego użycia w scenariuszu skorupy.
Pod skontaktowaniem skorupy ($)
służy do dostępu do wartości zmiennych Awk ($)
Jest używany tylko przy uzyskiwaniu dostępu do zawartości pola, ale nie do dostępu do wartości zmiennych.
Przykład 2: Spójrzmy na jeden inny przykład za pomocą pliku, który zawiera wiele wywoływanych wierszy my_shoping.lista.
Bez nazwy ITUT_NITE_PRICE Cena 1 mysz #20 000 1 #20 000 2 Monitor #500 000 1 #500 000 3 RAM_CHIPS #150 000 2 #300 000 4 Ethernet_Cables #30 000 4 #120 000
Powiedz, że chciałeś tylko drukować Cena jednostkowa
każdego elementu na liście zakupów musisz uruchomić poniższe polecenie:
$ awk '// drukuj 2 $, 3 $ „my_shopping.tekst Item_name Unit_Price Mysz #20 000 Monitor #500 000 RAM_CHIPS #150 000 Ethernet_Cables #30 000
Awk ma również printf
Polecenie, które pomaga sformatować wyjście, jest dobrym sposobem, ponieważ widać, że powyższe dane wyjściowe nie jest wystarczająco jasne.
Za pomocą printf
Aby sformatować wyjście Item_name I Cena jednostkowa:
$ awk '// printf " %-10s %s \ n", 2 $, 3 $ „my_shopping.tekst Item_name Unit_Price Mysz #20 000 Monitor #500 000 RAM_CHIPS #150 000 Ethernet_Cables #30 000
Streszczenie
Edycja pola jest bardzo ważna podczas korzystania z Awk Aby filtrować tekst lub struny, pomaga uzyskać konkretne dane w kolumnach na liście. I zawsze pamiętaj, że użycie ($)
operator w Awk różni się od tego, że skorupy skorupowe.
Mam nadzieję, że artykuł był dla Ciebie pomocny i jak wszelkie dodatkowe informacje lub pytania, możesz opublikować komentarz w sekcji komentarzy.
- « Jak używać AWK i wyrażeń regularnych do filtrowania tekstu lub ciągów w plikach
- Ebook wprowadzający Django Pierwsze start z Basics Python »