Leer Linux

Linux awk-opdracht met 10 voorbeelden

Linux awk-opdracht met 10 voorbeelden

Computersystemen zijn altijd gebruikt om waardevolle gegevens te analyseren die zijn opgeslagen in eenvoudige tekstbestanden. Computersystemen zelf worden op hun beurt beheerd via logbestanden. Wat potentieel gebruikelijk is in deze twee situaties, is dat ze een grote hoeveelheid gegevens bevatten, die vaak moeten worden gestroomlijnd voordat de gegevens daadwerkelijk worden gelezen; anders is het gewoon verwarrend.

Als u bijvoorbeeld bepaalde gegevens leest die in tabelvorm zijn gerangschikt, wilt u enkele kolommen, andere niet.

Deze vereiste was zelfs in die tijd erg en daarom bevat het GNU-project een geweldige tool waarmee gebruikers gegevens kunnen filteren en extraheren voor een betere ervaring. Dat gereedschap is AWK.

Geschiedenis

AWK is eigenlijk een programmeertaal die zich toelegt op tekstverwerking. Het wordt gebruikt voor gegevensextractie in specifieke patronen. Het werd in de jaren zeventig ontwikkeld door de Bell Labs, door Alfred Aho, Peter Weinberger en Brian Kernighan (de initialen van hun achternamen gaven geboorte aan de naam). De ontwikkeling van awk stopte daar niet. In 1985 werd een nieuwe versie geïntroduceerd, die nieuwe wijzigingen in het awk-commando aanbracht, waaronder de mogelijkheid om meerdere invoerstromen, berekende reguliere expressies, door de gebruiker gedefinieerde functies en nog veel meer te verwerken! Kortom, de update maakte het een krachtigere programmeertaal.

Awk heeft een andere implementatie. Om ervoor te zorgen dat er een goede implementatie is die een standaardaanpak biedt, schreef Paul Rubin in 1986 gawkk. Het werkte goed met de nieuwere awk.

Afgezien daarvan werden in 1989 System V Release nieuwe functies toegevoegd. De ontwikkelaars hebben ook de donkere hoeken verbeterd, waardoor het voor programmeurs en gebruikers beter is om het te gebruiken. De laatste verandering vond plaats in 1997 toen awk netwerktoegang zag - waardoor gebruikers problemen op afstand konden oplossen.

De laatste herschreven gedaan in 2011 toen John Haque de binnenkant van de gap herschreef.

Dingen die je kunt doen met AWK

Inmiddels moet het enigszins duidelijk zijn waartoe AWK in staat is. Het is een scripttaal voor algemene doeleinden waarmee u tekstverwerking kunt verwerken. Gevorderde gebruikers kunnen het ook gebruiken voor analyse en rapportage.

AWK is niet zoals andere programmeertalen, omdat het datagestuurd is in plaats van een procedurele programmeertaal. Dat betekent dat u het effectief kunt gebruiken om acties uit te voeren tegen tekstinvoer. Kortom, je kunt het gebruiken om gegevens te transformeren, in te voeren en ze ook als standaarduitvoer te verzenden.

Kortom, u kunt AWK gebruiken om eenvoudige bewerkingen uit te voeren, zoals het splitsen van elke invoerregel in velden, het regel voor regel scannen van een bestand, het uitvoeren van actie(s) op overeenkomstregels, enzovoort! Het awk-commando is ook handig voor in procedure opgemaakte rapporten en transformeert gegevensbestanden. Bovendien krijgt u ook toegang tot programmeerconstructies zoals voorwaardelijke en lussen, tekenreeksen en rekenkundige bewerkingen en uitvoerregels voor formatteren.

Hoe awk werkt

In dit gedeelte gaan we leren hoe awk werkt. Het is belangrijk om te weten dat awk verschillende implementaties heeft. Om ervoor te zorgen dat we op dezelfde lijn zitten, zullen we de GNU-implementatie bespreken en gebruiken - die in de volksmond bekend staat als gawk. In de meeste gevallen is de gawk gekoppeld aan de awk-interpreter.

Om een ​​goed begrip te krijgen, moeten we eerst de Records en velden begrijpen.

Het is bekend dat awk tekstuele streams en gegevensbestanden kan verwerken process. Om de gegevens te verwerken, wordt de invoer verdeeld in velden en records. Om ervoor te zorgen dat awk niet overweldigd raakt, wordt er op elk moment één record verwerkt totdat het einde van de invoer is bereikt. Bovendien zijn de records verder onderverdeeld in eenvoudige secties met behulp van een recordscheidingsteken met tekens. Elke record wordt ook gescheiden met behulp van nieuwe regeltekens. Dit betekent dat elke regel een record kan worden genoemd.

U kunt ervoor kiezen om een ​​nieuw recordscheidingsteken in te stellen met behulp van de RS-variabele.

Vervolgens komt het gearchiveerde scheidingsteken. Zoals gebruikelijk heeft elke record velden en deze worden gescheiden met behulp van het veldscheidingsteken. Het veldscheidingsteken kan witruimte, tabs, nieuwe regeltekens en spatie zijn. Ook wordt naar elk veld verwezen met het $-symbool, terwijl het veldnummer begint met 1. Dit betekent dat het eerste veld kan worden aangeduid als $ 1, terwijl het tweede veld wordt aangeduid als $ 2. Op deze manier kan het n-de veld worden aangeduid als $nf.

Het awk-programma

Het tweede aspect van awk is het awk-programma. Als je met awk wilt werken, moet je een programma schrijven waarmee het commando de tekst kan uitvoeren of verwerken. Het awk-programma biedt veel functionaliteit met behulp van regels en door de gebruiker gedefinieerde functies. De regels werken met een actiepaar of één patroon, en de regels worden gescheiden door puntkomma's of een nieuwe regel.

In het geval dat je je afvraagt, ziet een awk-programma er als volgt uit:.

patroon  actie  patroon  actie … 

Kortom, het awk-programma werkt door de records te matchen op basis van patronen. Als het patroon in het record wordt gevonden, wordt het verwerkt. Zo niet, dan wordt het hele record gematcht om er zeker van te zijn dat er iets overeenkomt op basis van regels.

awk-opdrachtvoorbeelden

Nu we een goed begrip hebben van het awk-commando en hoe het werkt, is het nu tijd voor ons om enkele voorbeelden van het awk-commando te bekijken.

Als je awk nog nooit eerder hebt gebruikt, wil je misschien weten dat awk kan worden gebruikt met opties zoals hieronder:

awk options programmabestand

De opties die u met awk kunt gebruiken, zijn onder meer:

Voorbeeld 1: AWK-scripts lezen

Een van de meest gebruikelijke manieren om awk te gebruiken, is door scripts te lezen. Als Linux-gebruiker kun je een awk-script maken met behulp van de enkele aanhalingstekens.

Om dit te doen, moet u de volgende opdracht in de terminal typen:.

$awk 'print "Welkom bij Hallo, Wereld -- AWK-zelfstudie"'

In het bovenstaande voorbeeld, wat u typt, wordt teruggestuurd naar het scherm zelf. Het commando wordt uitgevoerd totdat je het beëindigt door op CTRL + D . te drukken.

Voorbeeld 2: Meerdere opdrachten gebruiken

Een ander veelgebruikt gebruik van awk is om meerdere commando's te gebruiken. Als gebruiker wil je misschien twee awk-commando's combineren tot één om het gewenste resultaat te krijgen. In dit voorbeeld zullen we een string uitvoeren en dan het tweede woord in de string vervangen door nieuwe invoer.

$echo "Hallo wereld" | awk '$2 = "Universum; druk $0 af"'

In het bovenstaande voorbeeld hebben we eerst "Hello, World" herhaald naar de terminal. Vervolgens hebben we een ander awk-commando samengevoegd waarbij we het tweede woord hebben vervangen door Universe - en vervolgens de tekenreeks hebben uitgevoerd, namelijk Hello Universe.

Voorbeeld 3: Variabele gebruiken

Met variabelen kunt u informatie opslaan en openen. Als je al eerder programmeertalen hebt gebruikt, ken je ze zeker. In het geval van awk gebruik je het om tekstbestanden te verwerken. Met behulp van de variabelen hebt u toegang tot bepaalde gegevensvelden in het bestand, net zoals hieronder:.

Voor dit doel hebben we een nieuw tekstbestand gemaakt, mynewfile, waarin we enkele willekeurige maar mooie regels hebben ingevoerd.

Vervolgens moet u de opdracht uitvoeren, zoals hieronder weergegeven:.

awk 'print $1' mijn nieuwe bestand

Zoals je kunt zien, voert het die specifieke variabele uit die dat veld uit het bestand laat zien. Je zou ook de fout moeten zien die ik heb gemaakt.

Voorbeeld 4: AWK-voorbewerking

Met het awk-commando kun je preprocessing toevoegen. Om dit te doen, moet u het BEGIN-sleutelwoord gebruiken.

Als je goed leest, hebben we hierboven een nieuw bestand gemaakt. Laten we proberen de awk-voorbewerking te gebruiken om de inhoud van het bestand te laten zien.

De opdracht ervoor is als volgt:.

awk 'awk BEGIN print "De inhoud van het bestand:" > print $0' , mynewfile

Het bovenstaande voorbeeldscherm is niet correct. Ik heb "Begin" gebruikt in plaats van "BEGIN", daarom zie je het printstatement niet uitvoeren. Ik laat dit aan jou over om uit te proberen en te zien hoe je resultaat gaat!

Voorbeeld 5: Script lezen uit bestand

Deze is lastig. Hier kun je het awk-script gebruiken om een ​​bestand te lezen.

We maken een nieuw script dat het volgende bevat:.

print $1 "universum begint bij " $6"

We hebben het bestand opgeslagen als een nieuw script.

Voer nu de volgende opdracht uit op de terminal:.

$awk -F: -f nieuwscript /etc/passwd

Fascinerend, toch!

Voorbeeld 6: AWK-nabewerking

Vervolgens bekijken we de AWK-nabewerking. Het werkt vergelijkbaar met voorbewerking, maar deze keer gebruikt de nabewerking het END-commando.

$ awk 'BEGIN print "De inhoud van het bestand begint nu:" > > print $0 > > END print "Het bestand eindigt"' mynewfile

Voorbeeld 7: Door de gebruiker gedefinieerde variabelen

U kunt ook variabelen gebruiken binnen het awk-commando zonder een getal of dollarteken te gebruiken.

Hieronder is een voorbeeld:.

$awk ' BEGIN test = "Welkom bij FossLinux Awesome Linux Family" print test  '

Voorbeeld 8: Ingebouwde functies

De awk-commando's zijn ook handig met hun ingebouwde functies. U kunt bijvoorbeeld wiskundige functies gebruiken, en ook String-functies.

$ awk 'BEGIN x - "fossLinux"; print touper(x)'
$ awk 'BEGIN x=exp(35); print x'

Voorbeeld 9: Afdrukken formatteren

U kunt ook de printf-functie formatteren die bij awk . wordt geleverd. Er zijn veel modifiers die je kunt gebruiken. U kunt bijvoorbeeld c gebruiken om af te drukken als een string; je kunt ook d gebruiken voor een geheel getal, enzovoort.

$ awk 'BEGIN  x = 200 * 200 printf "Het resultaat is: %e\n", x '

Voorbeeld 10: Gestructureerde opdrachten

U kunt ook gestructureerde opdrachten gebruiken, zoals if, else, while of for loop. Laten we het onderstaande voorbeeld bekijken voor het if-commando.

$ awk 'if ($1 > 20) print $2' mijnnieuwbestand

Conclusie

Dit leidt ons naar het einde van onze awk commando tutorial. Dus, vond je het nuttig, en ga je het gebruiken voor je werk?? Reageer hieronder en laat het ons weten.

Hoe de linker- en rechtermuisknop op Windows 10 pc te veranderen
Het is nogal een norm dat alle computermuisapparaten ergonomisch zijn ontworpen voor rechtshandige gebruikers. Maar er zijn muisapparaten beschikbaar ...
Emuleer muisklikken door te zweven met Clickless Mouse in Windows 10
Het gebruik van een muis of toetsenbord in de verkeerde houding of overmatig gebruik kan leiden tot veel gezondheidsproblemen, waaronder spanning, car...
Voeg muisbewegingen toe aan Windows 10 met deze gratis tools
In de afgelopen jaren zijn computers en besturingssystemen sterk geëvolueerd. Er was een tijd dat gebruikers opdrachten moesten gebruiken om door best...