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:
BEGINNENik=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.awkConclusie:
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.