Hoe voeg ik een regel in na de wedstrijd met `sed`?

How Insert Line After Match Using 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 met behulp van het sed-commando.

Hoe u een regel invoegt na het vinden van een overeenkomst in een string of een regel, 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

Het volgende commando zoekt inng in de string, ik hou van programmeren, en een regel tekst, Hou je van programmeren? wordt ingevoegd na de tekenreeks als de zoekreeks bestaat.





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

$gooide uit '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 ing. in de string, ik hou van programmeren en het bestaat in de string.

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

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

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 het sed-commando wordt gebruikt zonder de optie -i, dan 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 voorkomt.

A. Gebruik a 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 het sed-commando

De i kan in het zoekpatroon van het sed-commando worden gebruikt 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.txt met de volgende inhoud om het gebruik van de bovenstaande vlag in het sed-commando te tonen.

producten.txt

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 het products.txt-bestand, op basis van het patroon dat in de sed-opdracht is gebruikt.

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

$katproducten.txt

$sed '2 a b01 Bakpoeder'producten.txt

$katproducten.txt

De volgende uitvoer verschijnt 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 het sed-commando om de laatste regel van het bestand te vermelden.

$katproducten.txt

$sed '$ a b01 Bakpoeder'producten.txt

$katproducten.txt

De volgende uitvoer verschijnt 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.

$katproducten.txt

$sed '/^s01.*/a b01 Bakpoeder'producten.txt

$katproducten.txt

De volgende uitvoer verschijnt na het uitvoeren van de opdracht.


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

$katproducten.txt

$sed '/Powder$/a b01 Bakpoeder'producten.txt

$katproducten.txt

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.

$katproducten.txt

$sed '/^[a-c]/a b01 Bakpoeder b02 Baking Soda'producten.txt

$katproducten.txt

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

$katproducten.txt

$sed '/cream/i b01 Bakpoeder'producten.txt

$katproducten.txt

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 i-optie wordt gebruikt met het sed-commando om een ​​nieuwe regel in het bestand in te voegen op basis van het patroon.

$katproducten.txt

$sed -l '/e$/a g01 Ghee'producten.txt

$katproducten.txt

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 het sed-commando met patroon zijn in deze tutorial getoond om de lezer te helpen dit commando toe te passen voor het tijdelijk of permanent invoegen van regels in het patroon op basis van het patroon.