Jak używać AWK do drukowania pól i kolumn w pliku

Jak używać AWK do drukowania pól i kolumn w pliku

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 kolumny

Jeś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.tekst 
Utwó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ą:

  1. Pole, które jest „Tecmint.com ” jest dostępny za pomocą 1 USD.
  2. Pole drugie, co jest "Jest" jest dostępny za pomocą 2 USD.
  3. 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.