Home Dokumentacje Efektywne programowanie w AWK - Podręcznik użytkownika GNU awk - Przydatne programy jednolinijkowe
18 | 08 | 2019
Efektywne programowanie w AWK - Podręcznik użytkownika GNU awk - Przydatne programy jednolinijkowe Drukuj

Przejdź do pierwszej, poprzedniej, następnej, ostatniej sekcji, spisu treści.

 


 

3. Przydatne programy jednolinijkowe

Wiele przydatnych programów awk jest krótkich, mają linijkę czy dwie. Oto kolekcja przydatnych programików na dobry początek. Niektóre z nich zawierają konstrukcje, o których jeszcze nie mówiono. Opis danego programu powinien dać ci pojęcie, o co chodzi, ale proszę przeczytaj resztę książki, by stać się ekspertem od awk!

Większość tych przykładów używa pliku danych o nazwie `dane'. Jest to tylko wypełniacz; gdybyś chciał się nimi posłużyć, podstaw zamiast `dane' własne nazwy plików.

awk '{ if (length($0) > max) max = length($0) }
END { print max }' dane
Ten program wypisuje długość najdłuższego wiersza.
awk 'length($0) > 80' dane
Ten program wypisuje każdy wiersz dłuższy niż 80 znaków. Jedyna reguła jako wzorzec ma wyrażenie relacyjne i nie ma akcji (zatem używana jest domyślna akcja, wypisanie rekordu).
expand dane | awk '{ if (x < length()) x = length() }
END { print "maximum line length is " x }'
Ten program wypisuje długość najdłuższego wiersza pliku `dane'. Wejście przetwarzane jest programem expand, zmieniającym tabulacje na spacje, zatem porównywane szerokości są faktycznie kolumnami od prawego marginesu.
awk 'NF > 0' dane
Ten program wypisuje każdy wiersz mający co najmniej jedno pole. Jest to prosty sposób na usunięcie pustych wierszy z pliku (lub raczej, utworzenia nowego pliku podobnego do starego, ale z którego usunięto puste wiersze).
awk 'BEGIN { for (i = 1; i <= 7; i++)
print int(101 * rand()) }'
Ten program wypisuje siedem liczb losowych od zera do 100, włącznie.
ls -lg pliki | awk '{ x += $5 } ; END { print "ogółem bajtów: " x }'
Ten program wypisuje całkowitą liczbę bajtów używanych przez pliki.
ls -lg pliki | awk '{ x += $5 }
END { print "ogółem K-bajtów: " (x + 1023)/1024 }'
Ten program wypisuje całkowitą liczbę kilobajtów używanych przez pliki.
awk -F: '{ print $1 }' /etc/passwd | sort
Ten program wypisuje posortowaną listę nazw zgłoszeniowych wszystkich użytkowników.
awk 'END { print NR }' dane
Ten program zlicza wiersze pliku.
awk 'NR % 2 == 0' dane
Ten program wypisuje wiersze o parzystych numerach w pliku danych. Gdybyśmy użyli zamiast powyższego wyrażenia `NR % 2 == 1', wypisywałby wiersze o numerach nieparzystych.

 


Przejdź do pierwszej, poprzedniej, następnej, ostatniej sekcji, spisu treści.

 
Linki sponsorowane

W celu realizacji usług i funkcji na witrynach internetowych ZUI "ELPRO" stosujemy pliki cookies. Korzystanie z witryny bez zmiany ustawień dotyczących plików cookies oznacza, że będą one zapisywane w urządzeniu wyświetlającym stronę internetową. Więcej szczegółów w Polityce plików cookies.

Akceptuję pliki cookies z tej witryny.