Awk

Hoe het door tabs gescheiden bestand te ontleden met 'awk'

Hoe het door tabs gescheiden bestand te ontleden met 'awk'

'tab' wordt gebruikt als scheidingsteken In het door tabs gescheiden bestand. Dit type tekstbestand is gemaakt om verschillende soorten tekstgegevens in een gestructureerd formaat op te slaan.  Er bestaan ​​verschillende soorten commando's in Linux om dit type bestand te ontleden.  'awk'-opdracht is een van de manieren om het door tabs gescheiden bestand op verschillende manieren te ontleden. Het gebruik van het 'awk'-commando om het door tabs gescheiden bestand te lezen, wordt in deze zelfstudie getoond.

Maak een door tabs gescheiden bestand:

Maak een tekstbestand met de naam gebruikers.tekst met de volgende inhoud om de opdrachten van deze tutorial te testen test. Dit bestand bevat de gebruikersnaam, het e-mailadres, de gebruikersnaam en het wachtwoord.

gebruikers.tekst

Naam                E-mail                        Gebruikersnaam         Wachtwoord
Md. Robin         [e-mail beveiligd]               robin89                563425
Nila Hasan         [e-mail beveiligd]                nila78                 245667
Mirza Abbas        [email protected]               mirza23                534788
Aornob Hasan       [e-mail beveiligd]         arnob45                778473
Nuhas Ahsan        [email protected]               nuhas34                563452

Voorbeeld-1: druk de tweede kolom van een door tabs gescheiden bestand af met de optie -F

De volgende 'sed'-opdracht drukt de tweede kolom van een door tabs gescheiden tekstbestand af. Hier de '-F' optie wordt gebruikt om het veldscheidingsteken van het bestand te definiëren.

$ kattengebruikers.tekst
$ awk -F '\t' 'print $2' gebruikers.tekst

De volgende uitvoer verschijnt na het uitvoeren van de opdrachten:. De tweede kolom van het bestand bevat de e-mailadressen van de gebruiker, die worden weergegeven als uitvoer.

Voorbeeld-2: Druk de eerste kolom van een door tabs gescheiden bestand af met behulp van de FS-variabele

De volgende 'sed'-opdracht drukt de eerste kolom van een door tabs gescheiden tekstbestand af. Hier, FS ( Veldscheidingsteken) variabele wordt gebruikt om het veldscheidingsteken van het bestand te definiëren define.

$ kattengebruikers.tekst
$ awk ' print $1 ' FS='\t' gebruikers.tekst

De volgende uitvoer verschijnt na het uitvoeren van de opdrachten:. De eerste kolom van het bestand bevat de gebruikersnamen, die worden weergegeven als uitvoer as.

Voorbeeld-3: Druk de derde kolom van een door tabs gescheiden bestand af met opmaak

Met de volgende 'sed'-opdracht wordt de derde kolom van het door tabs gescheiden tekstbestand afgedrukt met opmaak met behulp van de FS variabel en printf. Hier de FS variabele wordt gebruikt om het veldscheidingsteken van het bestand te definiëren.

$ kattengebruikers.tekst
$ awk 'BEGINFS="\t" printf "%10s\n", $3' gebruikers.tekst

De volgende uitvoer verschijnt na het uitvoeren van de opdrachten:. De derde kolom van het bestand bevat de gebruikersnaam die hier is afgedrukt.

Voorbeeld-4: Druk de derde en vierde kolom van het door tabs gescheiden bestand af met OFS

OFS (Output Field Separator) wordt gebruikt om een ​​veldscheider toe te voegen aan de uitvoer. De volgende 'awk'-opdracht verdeelt de inhoud van het bestand op basis van het scheidingsteken tab(\t) en drukt de 3e en 4e kolom af met de tab(\t) als scheidingsteken.

$ kattengebruikers.tekst
$ awk -F "\t" 'OFS="\t" print $3, $4 > ("output.txt")' gebruikers.tekst
$ kat uitgang.tekst

De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten:. De 3e en 4e kolom bevatten de gebruikersnaam en het wachtwoord, die hier zijn afgedrukt.

Voorbeeld-5: Vervang de specifieke inhoud van het door tabs gescheiden bestand

sub() functie wordt gebruikt in 'awk to command for vervanging'. Het volgende 'awk'-commando zoekt het nummer 45 en vervangt het nummer 90 als het zoeknummer in het bestand voorkomt. Na de vervanging wordt de inhoud van het bestand opgeslagen in de uitvoer.txt-bestand.

$ kattengebruikers.tekst
$ awk  -F "\t"'sub(/45/,90);print' gebruikers.txt > uitvoer.tekst
$ kat uitgang.tekst

De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten:. Het resultaat.txt-bestand toont de gewijzigde inhoud na het toepassen van de vervanging. Hier is de inhoud van de 5e regel gewijzigd en is 'arnob45' gewijzigd in 'arnob90'.

Voorbeeld-6: Tekenreeks toevoegen aan het begin van elke regel van een door tabs gescheiden bestand

In het volgende wordt het 'awk'-commando, de '-F'-optie gebruikt om de inhoud van het bestand te verdelen op basis van het tabblad (\t). OFS heeft gebruikt om een ​​komma(,) toe te voegen als veldscheidingsteken in de uitvoer. sub() functie wordt gebruikt om de tekenreeks '-→' toe te voegen aan het begin van elke regel van de uitvoer.

$ kattengebruikers.tekst
$ awk -F "\t" 'OFS=",";sub(/^/, "---->");print $1,$2,$3' gebruikers.tekst

De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten:. Elke veldwaarde wordt gescheiden door een komma(,) en er wordt een tekenreeks toegevoegd aan het begin van elke regel.

Voorbeeld-7: Vervang de waarde van een door tabs gescheiden bestand door de functie gsub() te gebruiken

gsub() functie wordt gebruikt in het 'awk' commando voor globale vervanging. Alle tekenreekswaarden van het bestand zullen vervangen waar het zoekpatroon overeenkomt. Het belangrijkste verschil tussen de functies sub() en gsub() is dat de functie sub() de vervangingstaak stopt nadat de eerste overeenkomst is gevonden, en de functie gsub() zoekt in het patroon aan het einde van het bestand naar vervanging. De volgende 'awk'-opdracht zoekt het woord 'nila' en 'Mira' globaal in het bestand en vervangt alle exemplaren door de tekst 'Ongeldige naam', waar het zoekwoord overeenkomt.

$ kattengebruikers.tekst
$ awk  -F '\t' 'gsub(/nila|Mira/, "Ongeldige naam"); print' gebruikers.tekst

De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten:. Het woord 'nila' komt twee keer voor in de 3e regel van het bestand dat is vervangen door het woord 'Ongeldige naam' in de uitvoer.

Voorbeeld-8: Druk de opgemaakte inhoud af van een door tabs gescheiden bestand

De volgende 'awk'-opdracht drukt de eerste en de tweede kolom van het bestand af met opmaak met behulp van printf. De uitvoer toont de naam van de gebruiker door het e-mailadres tussen haakjes te plaatsen.

$ kattengebruikers.tekst
$ awk -F '\t' 'printf "%s(%s)\n", $1,$2' gebruikers.tekst

De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten:.

Conclusie

Elk door tabs gescheiden bestand kan eenvoudig worden geparseerd en afgedrukt met een ander scheidingsteken door de opdracht 'awk' te gebruiken. De manieren om door tabs gescheiden bestanden te ontleden en in verschillende formaten af ​​te drukken, zijn in deze zelfstudie getoond aan de hand van meerdere voorbeelden. Het gebruik van de functies sub() en gsub() in de opdracht 'awk' voor het vervangen van de inhoud van het door tabs gescheiden bestand wordt ook uitgelegd in deze tutorial. Ik hoop dat deze tutorial de lezers zal helpen om het door tabs gescheiden bestand gemakkelijk te ontleden nadat ze de voorbeelden van deze tutorial goed hebben geoefend.

SuperTuxKart voor Linux
SuperTuxKart is een geweldige titel die is ontworpen om je de Mario Kart-ervaring gratis te bieden op je Linux-systeem. Het is behoorlijk uitdagend en...
Strijd om Wesnoth Zelfstudie
The Battle for Wesnoth is een van de meest populaire open source strategiespellen die je op dit moment kunt spelen. Dit spel is niet alleen al heel la...
0 A.D. zelfstudie
Van de vele strategiespellen die er zijn, 0 A.D. slaagt erin om op te vallen als een uitgebreide titel en een zeer diep, tactisch spel ondanks dat het...