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.
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 Naam01 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.
$ 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.