Skocz do zawartości

Jak pisać programy w AWK


Recommended Posts

Cześć mam problem natury raczej systemów komputerowych dlatego pisze go w tym dziale. Otóż na studiach dostałem do napisania kilka prostych skryptów w programie AWK które musze oddać na systemy operacyjne i sieci. Nie mam zielonego pojęcia jak do tego się zabrać ponieważ nie było mnie na zajęciach i nie rozumiem AWKa a prowadzący nie ma w naturze czekania na tych co nie nadążają.


Więc czy mógłby mi ktoś napisać te programy bądź wytłumaczyć chociaż jak to zrobić? (czytałem poradniki ale są dla mnie w większości pisane niezrozumiałym językiem).

Przygotuj skrypty awk:

1) Skrypty, który z /etc/passwd wypisze tylko nazwy użytkowników

2) Skrypt, który z /etc/hosts wypisze nazwy hostów, dla adresów ip zaczynających się od 192.168.128

3) Skrypt, który z /etc/fstab wypisze dla systemów plików montowanych z "aleksnfs" ostatni fragment ścieżki katalogu (czyli dla "/users/stud/bn" wypisze "bn")

Z góry dziękuję za pomoc :)

 

Link to post
Share on other sites
awk -F ':' '{print $1}' /etc/passwd
awk -F ' ' '/192\.168\.128/{print $2}' /etc/hosts
awk -F ' ' '/aleksnfs/{print $2}' /etc/fstab | awk -F '/' '{print $NF}'

Ten ostatni działa, ale jest trikiem z pajpą... Nie wiem jak to zrobić lepiej, za pomocą jednego awk. Nie jestem biegły w tym.

 

PS. Temat bym przeniósł do programowania...

 

PS2. Aha, no i przydałoby Ci się wytłumaczyć o co tu biega. Otóż parametr -F to precyzowanie separatora jakim są oddzielone interesujące nas dane. W przykładzie 1 jest to ":". Potem komenda print z argumentem $1 to po prostu pierwsza kolumna po podzieleniu przez te separatory.

$2 to druga kolumna, $3 trzecia ... $NF to ostatnia ($(NF-1) to przedostatnia).

Precyzowanie /wyrazenie/ przed kodem w {} pozwala na przefiltrowanie linii tekstu regexem. I tak w przykładzie 2 bierzemy tylko te linie które zawierają 192.168.128 (specjalnie \., ponieważ w regex . oznacza dowolny znak), a w przykładzie 3cim tylko te które zawierają napis aleksnfs.

Edytowane przez Deomortis
Link to post
Share on other sites

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...