Awk

Awk Trim witruimte

Awk Trim witruimte
Als programmeur moet u mogelijk met verschillende bestanden werken om gegevens op te slaan en te manipuleren. Een basistaak voor bestandsmanipulatie omvat het verwijderen van de witruimten in bestanden. Witruimten bestaan ​​uit spaties, lege regels, nbsp en tabs. Programmeurs moeten vaak spaties verwijderen, zodat alleen de noodzakelijke gegevens worden opgeslagen en onnodige spaties kunnen worden geëlimineerd. De witruimten kunnen ofwel voorloop (aan het begin van de regel) of volgspaties (aan het einde van de regel) spaties.

Hieronder volgen enkele scenario's waarin het verwijderen van spaties nodig kan zijn:

Het is mogelijk om spaties handmatig te verwijderen als een bestand maar een paar regels bevat. Maar voor een bestand dat honderden regels bevat, zal het moeilijk zijn om alle spaties handmatig te verwijderen. Hiervoor zijn verschillende opdrachtregelprogramma's beschikbaar, waaronder sed, awk, cut en tr. Van deze tools is awk een van de krachtigste commando's.

Wat is Awk?

Awk is een krachtige en nuttige scripttaal die wordt gebruikt bij tekstmanipulatie en het genereren van rapporten. Het awk-commando wordt afgekort met de initialen van elk van de mensen (Aho, Weinberger en Kernighan) die het hebben ontwikkeld. Met Awk kunt u variabelen, numerieke functies, tekenreeksen en rekenkundige operatoren definiëren; opgemaakte rapporten maken; en meer.

In dit artikel wordt het gebruik van het awk-commando voor het inkorten van witruimten uitgelegd. Na het lezen van dit artikel leert u hoe u de opdracht awk kunt gebruiken om het volgende uit te voeren:

De opdrachten in dit artikel zijn uitgevoerd op een Ubuntu 20.04 Focal Fossa-systeem. Dezelfde opdrachten kunnen echter ook worden uitgevoerd op andere Linux-distributies. We zullen de standaard Ubuntu Terminal-toepassing gebruiken voor het uitvoeren van de opdrachten in dit artikel. U kunt de terminal openen met de sneltoets Ctrl+Alt+T.

Voor demonstratiedoeleinden gebruiken we het voorbeeldbestand met de naam “sample.tekst.” om de voorbeelden in dit artikel uit te voeren.

Bekijk alle witruimten in een bestand

Om alle witruimten in een bestand te bekijken, pijpt u de uitvoer van het cat-commando als volgt naar het tr-commando:

$ kattenmonster.txt | tr " " "*" | tr "\t" "&"

Deze opdracht vervangt alle spaties in het gegeven bestand door het (*)-teken. Nadat u deze opdracht hebt ingevoerd, kunt u duidelijk zien waar alle witruimten (inclusief zowel voorloop- als volgspaties) in het bestand aanwezig zijn.

De *-tekens in de volgende schermafbeelding laten zien waar alle spaties aanwezig zijn in het voorbeeldbestand. Een enkele * staat voor een enkele witruimte.

Alle witruimten bijsnijden

Om alle spaties uit een bestand te verwijderen, pipet u het out of cat-commando als volgt naar het awk-commando:

$ kattenmonster.txt | awk ' gsub(/ /,""); afdrukken '

Waar

De bovenstaande opdracht vervangt alle spaties (/ /) door niets ("").

In de volgende schermafbeelding kunt u zien dat alle witruimten, inclusief de voorloop- en volgspaties, uit de uitvoer zijn verwijderd.

Voorlopende witruimten inkorten

Om alleen de voorloopspaties uit het bestand te verwijderen, pipet u het out of cat-commando als volgt naar het awk-commando:

$ kattenmonster.txt | awk ' sub(/^[ \t]+/, ""); afdrukken '

Waar

De bovenstaande opdracht vervangt een of meer spaties aan het begin van de tekenreeks (^[ \t]+ ) door niets ("") om de leidende witruimten te verwijderen.

In de volgende schermafbeelding kunt u zien dat alle voorloopspaties uit de uitvoer zijn verwijderd.

U kunt de volgende opdracht gebruiken om te controleren of de bovenstaande opdracht de voorloopspaties heeft verwijderd:

$ kattenmonster.txt | awk ' sub(/^[ \t]+/, ""); afdrukken ' | tr " " "*" |
tr "\t" "&"

In de onderstaande schermafbeelding is duidelijk te zien dat alleen de voorloopspaties zijn verwijderd.

Achterliggende witruimten bijsnijden

Om alleen de volgende witruimten uit een bestand te verwijderen, pipet u als volgt het out of cat-commando naar het awk-commando:

$ kattenmonster.txt | awk ' sub(/[ \t]+$/, ""); afdrukken '

Waar

De bovenstaande opdracht vervangt een of meer spaties aan het einde van de tekenreeks ([ \t]+ $) door niets ( "") om de volgende witruimten te verwijderen.

U kunt de volgende opdracht gebruiken om te controleren of de bovenstaande opdracht de volgende witruimten heeft verwijderd:

$ kattenmonster.txt | awk ' sub(/[ \t]+$/, ""); afdrukken ' | tr " " "*" | tr "\t" "&"

Uit de onderstaande schermafbeelding is duidelijk zichtbaar dat de volgende witruimten zijn verwijderd.

Trim zowel voorloop- als volgspaties

Om zowel de voorloop- als de volgspaties uit een bestand te verwijderen, pipet u als volgt het out of cat-commando naar het awk-commando:

$ kattenmonster.txt | awk ' gsub(/^[ \t]+|[ \t]+$/, ""); afdrukken '

Waar

De bovenstaande opdracht vervangt zowel de voorloop- als de volgspaties (^[ \t]+ [ \t]+$) met niets (“”) om ze te verwijderen.

Gebruik de volgende opdracht om te bepalen of de bovenstaande opdracht zowel de voorloop- als de volgspaties in het bestand heeft verwijderd:

$ kattenmonster.txt | awk ' gsub(/^[ \t]+|[ \t]+$/, ""); afdrukken ' |
tr " " "*" | tr "\t" "&"

Uit de onderstaande schermafbeelding is duidelijk zichtbaar dat zowel de voorloop- als de volgende witruimten zijn verwijderd en dat alleen de witruimten tussen de tekenreeksen overblijven.

Vervang meerdere spaties door één spatie

Om meerdere spaties te vervangen door een enkele spatie, pipet u het out of cat-commando als volgt naar het awk-commando:

$ kattenmonster.txt | awk ' gsub(/[ ]+/," "); afdrukken '

Waar:

De bovenstaande opdracht vervangt meerdere witruimten ([ ]+) door een enkele witruimte (“ “).

U kunt de volgende opdracht gebruiken om te controleren of de bovenstaande opdracht de meerdere spaties heeft vervangen door de witruimten:

$ kattenmonster.txt | awk ' sub(/[ \t]+$/, ""); afdrukken ' | | tr " " "*" | tr "\t" "&"

Er waren meerdere spaties in ons voorbeeldbestand. Zoals u kunt zien, meerdere witruimten in het voorbeeld.txt-bestand zijn vervangen door een enkele spatie met behulp van de opdracht awk.

Als u de witruimten alleen wilt inkorten in die regels die een specifiek teken bevatten, zoals een komma, dubbele punt of puntkomma, gebruikt u de opdracht awk met de -F invoerscheidingsteken.

Hieronder wordt bijvoorbeeld ons voorbeeldbestand weergegeven dat spaties in elke regel bevat.

Om de witruimten te verwijderen van alleen de regels die een komma (, bevatten), zou de opdracht als volgt zijn:

$ kattenmonster1.txt | awk -F, '/,/gsub(/ /,""); afdrukken'

waar (-F,) is het invoerveldscheidingsteken.

De bovenstaande opdracht zal alleen de witruimten verwijderen en weergeven van de regels die het gespecificeerde teken (,) erin bevatten. De rest van de lijnen blijven onaangetast.

Conclusie

Dat is alles wat u moet weten om de witruimten in uw gegevens in te korten met het awk-commando. Het kan om verschillende redenen nodig zijn om de witruimten uit uw gegevens te verwijderen. Wat de reden ook is, u kunt eenvoudig alle witruimten in uw gegevens inkorten met behulp van de opdrachten die in dit artikel worden beschreven. U kunt zelfs voorloop- of volgspaties inkorten, zowel voorloop- als volgspaties inkorten en meerdere spaties vervangen door een enkele spatie met het awk-commando.

Doom installeren en spelen op Linux
Inleiding tot Doom De Doom-serie is ontstaan ​​in de jaren 90 na de release van de originele Doom. Het was meteen een hit en vanaf die tijd heeft de g...
Vulkan voor Linux-gebruikers
Met elke nieuwe generatie grafische kaarten zien we game-ontwikkelaars de grenzen van grafische betrouwbaarheid verleggen en een stap dichter bij foto...
OpenTTD versus Simutrans
Je eigen transportsimulatie maken kan leuk, ontspannend en buitengewoon aanlokkelijk zijn. Daarom moet je ervoor zorgen dat je zoveel mogelijk spellen...