sed

Een regel invoegen na de wedstrijd met 'sed'?

Een regel invoegen na de wedstrijd met 'sed'?

Een van de handige en krachtige commando's van Linux is het "sed"-commando. Deze opdracht wordt gebruikt om verschillende soorten taken in Linux uit te voeren, zoals het invoegen, bijwerken en verwijderen van een bepaalde tekst of regel op basis van de overeenkomst. U kunt op verschillende manieren een tekst in een string of een bestand invoegen door de opdracht 'sed' te gebruiken.

Hoe u een regel invoegt nadat u een overeenkomst in een string of een regel heeft gevonden, wordt in deze zelfstudie getoond.

Voeg een regel in de String in

Een nieuwe regel kan worden ingevoegd na elke tekenreekswaarde met behulp van de opdracht "sed" als het patroon dat in de opdracht is gedefinieerd overeenkomt met een deel van de tekenreekswaarde.

Het volgende voorbeeld laat zien hoe een nieuwe regel kan worden toegevoegd na een tekenreekswaarde als een bepaalde tekenreeks ergens in de tekenreekswaarde voorkomt.

Voorbeeld-1: voeg een regel in een tekenreeks in nadat een overeenkomst is gevonden

De volgende opdracht zoekt naar "inng" in de tekenreeks, "I like programming", en een regel tekst, "Do you like programming?” wordt ingevoegd na de tekenreeks als de zoekreeks bestaat.

Hier wordt het "&"-teken gebruikt om de regel na de tekenreeks in te voegen.

$ echo "Ik hou van programmeren." | sed 's/inng/& Hou je van programmeren?/'

De volgende uitvoer laat zien dat "inng" niet bestaat in de tekenreeks en dat er geen regel wordt ingevoegd na de tekenreeks.


De volgende opdracht zoekt naar “ing.” in de string, “I like programming” en het bestaat in de string.

$ echo "Ik hou van programmeren." | sed 's/ing./& Hou je van programmeren?/'

De volgende uitvoer laat zien dat de nieuwe regel wordt toegevoegd na de tekenreeks:.

Een regel invoegen in een bestand

Er zijn twee manieren om een ​​regel in te voegen nadat een overeenkomst is gevonden in een bestand dat hieronder wordt vermeld. Wanneer de opdracht "sed" wordt gebruikt zonder de optie "-i", blijft de inhoud van het bestand ongewijzigd en toont de uitvoer de bestandsinhoud met de ingevoegde nieuwe regel. U moet de optie "-i" gebruiken met de opdracht "sed" om de nieuwe regel permanent in het bestand in te voegen als het overeenkomende patroon in het bestand bestaat.

EEN. "a" gebruiken in het "sed"-commando

De "a" kan in het zoekpatroon van de "sed" worden gebruikt om een ​​of meer regels in een bestand toe te voegen na de regel waar het zoekpatroon overeenkomt of na een bepaald regelnummer.

B. "i" gebruiken in de opdracht "sed"

De "i" kan worden gebruikt in het zoekpatroon van de opdracht "sed" om een ​​of meer regels in een bestand in te voegen vóór de regel waar het zoekpatroon overeenkomt.

Voeg lijn(en) in een bestand in op basis van het patroon:

Maak een door tabs gescheiden tekstbestand met de naam producten.tekst met de volgende inhoud om het gebruik van de bovenstaande vlag in de opdracht "sed" te tonen.

producten.tekst

ID        Naam
01         Slagroom
02        Cacaopoeder
03        Suiker
04        Ei
05        Meel

Voorbeeld-2: voeg een regel in na een bepaald regelnummer met de "a"

De volgende commando's laten zien hoe een nieuwe regel kan worden toegevoegd, na een bepaald regelnummer van de producten.txt-bestand, gebaseerd op het patroon dat wordt gebruikt in de opdracht "sed".

Hier toont het eerste commando de bestaande inhoud van het bestand. De opdracht "sed" zal de tekst "b01 Bakpoeder" toevoegen na de eerste twee regels van het bestand. De laatste opdracht wordt gebruikt om te controleren of de bestandsinhoud is gewijzigd of niet.

$ kattenproducten.tekst
$ sed '2 a b01\tBakpoeder' producten.tekst
$ kattenproducten.tekst

De volgende uitvoer zal verschijnen na het uitvoeren van de bovenstaande opdracht:.

Voorbeeld-3: voeg een regel in na de laatste regel met de "a"

De volgende opdracht toont de manier om een ​​nieuwe regel toe te voegen na de laatste regel van het bestand:. Het eerste en laatste commando toont de bestaande inhoud van het bestand voor en na het uitvoeren van het “sed” commando. Het "$"-symbool wordt gebruikt in het patroon van de "sed"-opdracht om de laatste regel van het bestand te vermelden.

$ kattenproducten.tekst
$ sed '$ a b01\tBakpoeder' producten.tekst
$ kattenproducten.tekst

De volgende uitvoer zal verschijnen na het uitvoeren van de bovenstaande opdracht:.

Voorbeeld-4: voeg een regel ergens in het bestand in na het matchen van een patroon met de "a"

De volgende "sed"-opdracht laat zien hoe een nieuwe regel overal in het bestand kan worden toegevoegd op basis van het overeenkomende patroon. Het patroon dat in de opdracht "sed" wordt gebruikt, doorzoekt elke regel die begint met "s01" en voegt de nieuwe tekenreeks erna toe. De vierde regel van het bestand begint met "s01", en de nieuwe regel wordt na die regel ingevoegd.

$ kattenproducten.tekst
$ sed '/^s01.*/a b01\tBakpoeder' producten.tekst
$ kattenproducten.tekst

De volgende uitvoer verschijnt na het uitvoeren van de opdracht:.


De volgende "sed"-opdracht zoekt elke regel die eindigt op "Powder" en voegt de nieuwe regel erna in. De derde regel van het bestand eindigt met "Powder". De nieuwe regel wordt dus na die regel ingevoegd.

$ kattenproducten.tekst
$ sed '/Powder$/a b01\tBakpoeder' producten.tekst
$ kattenproducten.tekst

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

Voorbeeld-5: voeg meerdere regels in na het overeenkomende patroon met "a"

De volgende "sed"-opdracht toont de manier om meerdere regels toe te voegen aan de inhoud van een bestand op basis van het overeenkomende patroon.

Hier worden twee regels toegevoegd na de derde regel, volgens het patroon.

$ kattenproducten.tekst
$ sed '/^[a-c]/a b01\tBakpoeder\nb02\tBaking Soda' producten.tekst
$ kattenproducten.tekst

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

Voorbeeld-6: voeg een lijn in na het matchen van een patroon met de "I"

$ kattenproducten.tekst
$ sed '/cream/i b01\tBakpoeder' producten.tekst
$ kattenproducten.tekst

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

Voorbeeld-7: Voeg een lijn permanent in na het overeenkomende patroon met behulp van de "-i" optie

De volgende "sed"-opdracht laat zien hoe u de inhoud van het bestand permanent kunt wijzigen. De optie "i" wordt gebruikt met de opdracht "sed" om een ​​nieuwe regel in het bestand in te voegen op basis van het patroon.

$ kattenproducten.tekst
$ sed -i '/e$/a g01\tGhee' producten.tekst
$ kattenproducten.tekst

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

Conclusie:

De manieren om twee of meer regels in een bestand in te voegen met behulp van de "sed"-opdracht met patroon zijn in deze zelfstudie getoond om de lezer te helpen deze opdracht toe te passen voor het tijdelijk of permanent invoegen van regels in het patroon op basis van het patroon.

Top 10 spellen om te spelen op Ubuntu
Het Windows-platform is een van de dominante platforms voor gaming geweest vanwege het enorme percentage games dat tegenwoordig wordt ontwikkeld om Wi...
5 beste arcade-spellen voor Linux
Tegenwoordig zijn computers serieuze machines die worden gebruikt om te gamen. Als je de nieuwe hoge score niet kunt halen, weet je wat ik bedoel. In ...
Strijd om Wesnoth 1.13.6 Ontwikkeling vrijgegeven
Strijd om Wesnoth 1.13.6 die vorige maand werd uitgebracht, is de zesde ontwikkelingsrelease in de 1.13.x-serie en het levert een aantal verbeteringen...