Cum să utilizați comanda awk pe Linux

Pe Linux, awk este un dinam de manipulare a textului în linia de comandă, precum și un limbaj de scripting puternic. Iată o introducere în unele dintre cele mai interesante caracteristici ale sale.

Cât de awk și-a luat numele

Comanda awk a fost numită folosind inițialele celor trei persoane care au scris versiunea originală în 1977: Alfred Aho, Peter Weinberger, și Brian Kernighan. Acești trei bărbați erau din legendar AT&T Laboratoarele Bell Panteonul Unix. Cu contribuțiile multor altora de atunci, awk a continuat să evolueze.

Este un limbaj de scripting complet, precum și un set complet de instrumente de manipulare a textului pentru linia de comandă. Dacă acest articol vă deschide pofta de mâncare, puteți verifica fiecare detaliu despre awk și funcționalitatea acestuia.

Reguli, modele și acțiuni

awk funcționează pe programe care conțin reguli compuse din modele și acțiuni. Acțiunea este executată pe textul care se potrivește cu modelul. Modelele sunt incluse în acolade ({}). Împreună, un model și o acțiune formează o regulă. Întregul program awk este inclus între ghilimele simple (‘).

Să aruncăm o privire la cel mai simplu tip de program awk. Nu are niciun model, așa că se potrivește cu fiecare linie de text introdusă în el. Aceasta înseamnă că acțiunea este executată pe fiecare linie. Bine utilizați-l pe ieșirea de la cei care poruncesc.

Iată rezultatul standard de la cine:

who

The

Poate că nu avem nevoie de toate aceste informații, ci, mai degrabă, vrem doar să vedem numele de pe conturi. Putem canaliza ieșirea de la who în awk și apoi îi putem spune awk să imprime doar primul câmp.

  Cum se instalează Slackware Linux

În mod implicit, awk consideră că un câmp este un șir de caractere înconjurat de spații albe, începutul unei linii sau sfârșitul unei linii. Câmpurile sunt identificate printr-un semn dolar ($) și un număr. Deci, $1 reprezintă primul câmp, pe care îl vom folosi cu acțiunea de imprimare pentru a imprima primul câmp.

Introducem următoarele:

who | awk '{print $1}'

awk tipărește primul câmp și renunță la restul liniei.

Putem imprima câte câmpuri ne dorim. Dacă adăugăm o virgulă ca separator, awk afișează un spațiu între fiecare câmp.

Introducem următoarele pentru a imprima și ora la care persoana sa autentificat (câmpul patru):

who | awk '{print $1,$4}'

Există câțiva identificatori speciali de câmp. Acestea reprezintă întreaga linie de text și ultimul câmp din linia de text:

$0: reprezintă întreaga linie de text.
$1: reprezintă primul câmp.
$2: reprezintă al doilea câmp.
$7: reprezintă al șaptelea câmp.
$45: reprezintă al 45-lea câmp.
$NF: reprezintă „număr de câmpuri” și reprezintă ultimul câmp.

Vom introduce următoarele pentru a afișa un fișier text mic care conține un citat scurt atribuit Dennis Ritchie:

cat dennis_ritchie.txt

The

Dorim ca awk să imprime primul, al doilea și ultimul câmp al citatului. Rețineți că, deși este înfășurat în fereastra terminalului, este doar o singură linie de text.

Introducem următoarea comandă:

awk '{print $1,$2,$NF}' dennis_ritchie.txt

Nu cunoaștem acea „simplitate”. este al 18-lea câmp din rândul de text și nu ne pasă. Ceea ce știm este că este ultimul câmp și putem folosi $NF pentru a-i obține valoarea. Perioada este considerată doar un alt personaj din

  Peste 30 de întrebări și răspunsuri frecvente la interviu Linux [2023]