Awk

10 geweldige voorbeelden van Awk-opdrachten

10 geweldige voorbeelden van Awk-opdrachten
Awk-opdracht is een krachtig hulpmiddel om gegevens te verwerken. Het krijgt invoergegevens, manipuleert het en geeft resultaten in standaarduitvoer. Er kunnen verschillende bewerkingen worden uitgevoerd op rijen en kolommen van een bestand.

Het kennen van de essentie van het "awk" -commando is erg belangrijk als het gaat om het efficiënt verwerken van gegevens, en dit bericht behandelt de belangrijkste kenmerken van het "awk" -commando. Laten we eerst de syntaxis controleren:

$ awk [opties] [bestand]

Enkele van de veelgebruikte opties staan ​​in de onderstaande tabel:

Keuze Omschrijving
-F Een bestandsscheidingsteken opgeven
-f Specificeer het bestand dat het "awk"-script bevat
-v Variabele toewijzen

Laten we eens kijken naar enkele voorbeelden over het gebruik van de opdracht "awk", en ter demonstratie heb ik een tekstbestand gemaakt met de naam testFile.tekst:

1. Een kolom van een bestand afdrukken met het awk-commando?

De opdracht "awk" kan worden gebruikt om een ​​specifieke kolom van het tekstbestand te krijgen. Gebruik om de inhoud van het bestand af te drukken:

$cat testFile.tekst

Gebruik nu om de tweede kolom van het bestand af te drukken:

$awk 'print $2' testFile.tekst

Gebruik de opdracht om meer dan één veld af te drukken:

$awk 'print $1,$2,$3' testFile.tekst

Als u de komma "," niet gebruikt, is de uitvoer zonder spaties:

$awk 'print $1$2$3' testFile.tekst

2. Hoe een reguliere expressie te gebruiken met het awk-commando:

Om de strings of een andere uitdrukking te matchen, gebruiken we slashes "//", bijvoorbeeld, als je de namen wilt afdrukken van mensen die "Geschiedenis" bestuderen, gebruik dan:

$awk '/History/ print $2' testFile.tekst

De output laat duidelijk zien dat alleen "Sam" en "Tommy" de cursus "Geschiedenis" bestuderen.

3. Hoe de relationele uitdrukking te gebruiken met de opdracht "awk":

Om de inhoud van een specifiek veld te matchen, kan relationele expressie worden gebruikt. Om een ​​tekenreeks of uitdrukking te vergelijken met een veld, geeft u het veld aan en gebruikt u de vergelijkingsoperator "~" met het patroon zoals weergegeven in de volgende opdracht:

$awk '$3 ~/is/ print $2' testFile.tekst

De bovenstaande uitvoer toont elk veld in kolom 2 tegen elk veld dat "is" bevat in kolom 3.

En om de tegenovergestelde uitvoer van de bovenstaande opdracht te krijgen, gebruikt u de "! ~”-operator:

$awk '$3! ~/is/ print $2' testFile.tekst

Ter vergelijking kunnen we ook operatoren gebruiken zoals groter dan ">" en kleiner dan "<” and equal “=” as well:

$awk '$4>70 print $2' testFile.tekst

De uitvoer heeft de namen afgedrukt van mensen die een cijfer van meer dan 70 . hebben behaald.

4. Hoe bereikpatroon te gebruiken met awk-opdracht:

Een bereik kan ook worden gebruikt om te zoeken; gebruik gewoon de komma "," om het bereik te scheiden zoals weergegeven in de onderstaande opdracht:

$awk '/Joel/, /Marlene/ print $3' testFile.tekst

De uitvoer toont de onderwerpen van het bereik van "Joel" tot "Marlene" uit kolom 2. We kunnen het dubbele gelijkteken "==" gebruiken om een ​​bereik te definiëren; zie onderstaand voorbeeld:

$awk '$4 == 80, $4 == 90 print $0' testFile.tekst

De uitvoer toont de namen van de mensen uit kolom 2 voor het bereik van tekens "70 tot 80" uit kolom 4.

5. Hoe patroon te combineren met behulp van logische operator:

Het gebruik van logische operatoren zoals OR "||," AND "&&" stelt u in staat om patronen voor zoeken te combineren. Gebruik de volgende opdracht:

$awk '$4>80 && $6>0.4 print $2' testFile.tekst

De bovenstaande opdracht drukt de namen van mensen af ​​tegen het vierde veld dat groter is dan 80 en het zesde veld dat groter is dan 0.4. En slechts twee records voldoen aan de voorwaarde.

6. De speciale uitdrukkingen van het awk-commando:

Er zijn twee speciale uitdrukkingen, “BEGINNEN” en “EINDE”:

BEGIN: Om een ​​actie uit te voeren voordat gegevens worden verwerkt

END: Om een ​​actie uit te voeren nadat de gegevens zijn verwerkt

$awk 'BEGIN print "Verwerking is begonnen"; print $2; END print “Verwerking is beëindigd”' testFile.tekst

7. De handige ingebouwde variabele van het awk-commando:

De opdracht awk heeft verschillende variabelen die helpen bij de gegevensverwerking:

Variabele Omschrijving
NF Het geeft het aantal velden in de gegevens
NR Het geeft het nummer van het huidige record
BESTANDSNAAM Toont de naam van het bestand dat momenteel wordt verwerkt
FS en OFS Veldscheidingsteken en uitvoerveldscheidingsteken
RS en ORS Scheidt de record en Output Record Separator

Bijvoorbeeld:

$awk 'ENDprint "De bestandsnaam is" FILENAME "heeft" NF "velden en" NR "records"' testFile.tekst

We gebruiken "END", maar als u "BEGIN" gebruikt, zou de uitvoer 0 velden en 0 records opleveren.

8. Het recordscheidingsteken wijzigen:

Het standaardscheidingsteken in de record is meestal spatie; als er een komma "," of punt " is." als uw veldscheidingsteken en gebruik vervolgens de "FS" -optie samen met het scheidingsteken.

Laten we nog een bestand hebben waarin gegevensvelden worden gescheiden door een komma dubbele punt ":":

$cat testFile2.tekst
$awk 'BEGIN FS= “:” print $2' testFile2.tekst

Aangezien het scheidingsteken van het bestand een dubbele punt is, maar de opdracht "awk" zelfs gunstig is voor dergelijke bestanden, gebruikt u gewoon de optie "FS".

De "-F" kan ook worden gebruikt:

$awk -F “:” 'print $2' testFile2.tekst

Het standaard recordscheidingsteken is "newline", en om het recordscheidingsteken in te stellen op ":", gebruikt u:

$awk 'BEGIN RS = “:”print $1' testFile2.tekst

9. Awk-acties:

Awk-acties zijn kleine programma's die zijn omgeven door "" haakjes en meer dan één verklaring hebben, gescheiden door puntkomma's ";".

Het meest gebruikte statement met het “awk” commando is het “print” statement. Als u bijvoorbeeld bij elk record een tekst wilt afdrukken, gebruikt u een tekenreeks tussen aanhalingstekens:

$awk '“Het is een veld,” $2' testbestand.tekst

Laten we een eenvoudige sombewerking uitvoeren met awk:

$awk 'sum += $4 END printf “%d\n”, sum' testFile.tekst

10. Een awk-programma maken:

Laten we beginnen met de "awk"-programmering, de onderstaande programmering is eenvoudigweg vermenigvuldigen:

BEGINNEN
ik=2
terwijl (j<4)

print “De vermenigvuldiging van 2 met” j “ is ” i*j;
j++

Sla het programma op onder de naam “mijnCode.awk” en om het uit te voeren, opent u terminal en typt u:

$awk -f mijnCode.awk

Conclusie:

De opdracht "awk" is een handige opdracht om gegevens van tekstbestanden te verwerken, te scannen, zoals het scheiden van een bepaald veld van een bestand; we gebruiken de opdracht "awk". Het maakt het gemakkelijker om iets in welke vorm of patroon dan ook uit de tekstbestanden te zoeken. In deze handleiding begrijpen we de basis van de opdracht "awk" en het gebruik ervan. De opdracht "awk" valideert gegevens, genereert rapporten en parseert zelfs bestanden. Met behulp van eenvoudige commando's "awk" kunnen gebruikers ook kleine programma's schrijven om gegevens efficiënter te verwerken.

OSD-overlay tonen in Linux-apps en -games op volledig scherm
Het spelen van games op volledig scherm of het gebruik van apps in de modus volledig scherm zonder afleiding kan u afsnijden van relevante systeeminfo...
Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...
Hoe een spel op Linux te ontwikkelen
Tien jaar geleden zouden niet veel Linux-gebruikers voorspellen dat hun favoriete besturingssysteem ooit een populair spelplatform voor commerciële vi...