Sed commando of Stream Editor is een zeer krachtig hulpprogramma dat wordt aangeboden door Linux/Unix systemen. Het wordt voornamelijk gebruikt voor tekstvervanging, vinden & vervangen, maar het kan ook andere tekstmanipulaties uitvoeren zoals invoegen, verwijderen, zoeken enz. Met SED kunnen we complete bestanden bewerken zonder ze daadwerkelijk te hoeven openen. Sed ondersteunt ook het gebruik van reguliere expressies, wat sed een nog krachtiger test manipulatie tool maakt.

In dit artikel zullen we leren om het sed commando te gebruiken met behulp van enkele voorbeelden. De basissyntaxis voor het gebruik van sed is,

sed OPTIONS…

Sed-Command-Options

Nu gaan we enkele voorbeelden bekijken.

Voorbeeld :1) Gedeeltelijke tekst van een bestand weergeven

Met sed kunnen we slechts een deel van een bestand bekijken, in plaats van het hele bestand te zien. Om enkele regels van het bestand te zien, gebruikt u het volgende commando,

$ sed -n 22,29p testfile.txt

hier, optie ‘n’ onderdrukt het afdrukken van het hele bestand & optie ‘p’ zal alleen de regels van 22 tot 29 afdrukken.

Exemplaar :2) Alles weergeven behalve enkele regels

Om de gehele inhoud van een bestand weer te geven behalve een bepaald gedeelte, gebruikt u het volgende commando,

$ sed 22,29d testfile.txt

Optie ‘d’ verwijdert de genoemde regels uit de uitvoer.

Exemplaar :3) Elke 3e regel vanaf de N-de regel weergeven

Om de inhoud van elke 3e regel vanaf regelnummer 2 of een andere regel weer te geven, gebruikt u het volgende commando

$ sed -n '2~3p' file.txt

Exemplaar :4 ) Een regel verwijderen met het commando sed

Om een regel met sed uit een bestand te verwijderen, gebruikt u het volgende commando,

$ sed Nd testfile.txt

waarbij ‘N’ het regelnummer is & optie ‘d’ zal het genoemde regelnummer verwijderen. Om de laatste regel van het bestand te verwijderen, gebruikt u

$ sed $d testfile.txt

Voorbeeld :5) Een reeks regels verwijderen

Om een reeks regels uit het bestand te verwijderen, gebruikt u

$ sed '29,34d' testfile.txt

Dit verwijdert de regels 29 tot 34 van testfile.txt bestand.

Exemplaar :6) Andere dan de genoemde regels verwijderen

Om andere dan de genoemde regels uit een bestand te verwijderen, gebruiken we ‘!’

$ sed '29,34!d' testfile.txt

hier wordt de ‘!’ optie gebruikt als niet, dus het zal de voorwaarde omkeren, d.w.z. het zal de genoemde regels niet verwijderen. Alle andere regels dan 29-34 zullen worden verwijderd uit de bestanden testfile.txt.

Exemplaar :7) Toevoegen van lege regels/spaties

Om een lege regel toe te voegen na elke niet-blanke regel, gebruiken we optie ‘G’,

$ sed G testfile.txt

Exemplaar :8) Zoeken en vervangen van een string met sed

Om & een string uit het bestand te zoeken en te vervangen, gebruiken we het volgende voorbeeld,

$ sed 's/danger/safety/' testfile.txt

hier zal optie ‘s’ zoeken naar het woord ‘gevaar’ & vervang het door ‘veiligheid’ op elke regel alleen voor het eerste voorkomen.

Voorbeeld :9) Een string in een heel bestand zoeken en vervangen met sed

Om het woord volledig uit het bestand te vervangen, gebruiken we optie ‘g’ met ‘s’,

$ sed 's/danger/safety/g' testfile.txt

Voorbeeld :10) Vervang het n-de voorkomen van string patroon

We kunnen ook een string vervangen op het n-de voorkomen van een bestand. Zoals ‘gevaar’ vervangen door ‘veiligheid’ alleen op het tweede voorkomen,

$ sed ‘s/danger/safety/2’ testfile.txt

Om ‘gevaar’ te vervangen op het tweede voorkomen van elke regel van het hele bestand, gebruik

$ sed 's/danger/safety/2g' testfile.txt

Voorbeeld :11) Een tekenreeks op een bepaalde regel vervangen

Om een tekenreeks alleen van een bepaalde regel te vervangen, gebruikt u

$ sed '4 s/danger/safety/' testfile.txt

Dit zal alleen de tekenreeks van de 4e regel van het bestand vervangen. We kunnen ook een bereik van regels vermelden in plaats van een enkele regel,

$ sed '4,9 s/danger/safety/' testfile.txt

Voorbeeld :12) Voeg een regel toe na/voor de gematchte zoekopdracht

Om een nieuwe regel met enige inhoud toe te voegen na elke patroonmatch, gebruik optie ‘a’,

$ sed '/danger/a "This is new line with text after match"' testfile.txt

Om een nieuwe regel toe te voegen met enige inhoud a vóór elke patroonmatch, gebruik optie ‘i’,

$ sed '/danger/i "This is new line with text before match" ' testfile.txt

Exemplaar :13) Verander een hele regel met overeenkomend patroon

Om een hele regel te veranderen in een nieuwe regel wanneer een zoekpatroon overeenkomt, moeten we optie ‘c’ gebruiken met sed,

$ sed '/danger/c "This will be the new line" ' testfile.txt

Dus wanneer het patroon overeenkomt met ‘gevaar’, zal de hele regel worden veranderd in de genoemde regel.

Gevorderde opties met sed

Tot nu toe hebben we alleen eenvoudige expressies met sed gebruikt, nu zullen we enkele geavanceerde toepassingen van sed met regex bespreken,

Voorbeeld :14) Het uitvoeren van meerdere sed commando’s

Als we meerdere sed expressies moeten uitvoeren, kunnen we optie ‘e’ gebruiken om de sed commando’s aan elkaar te rijgen,

$ sed -e 's/danger/safety/g' -e 's/hate/love/' testfile.txt

Exemplaar :15) Een reservekopie maken voordat we een bestand bewerken

Om een reservekopie van een bestand te maken voordat we het bewerken, gebruiken we optie ‘-i.bak’,

$ sed -i.bak -e 's/danger/safety/g' testfile.txt

Dit maakt een reservekopie van het bestand met extensie .bak. U kunt ook een andere extensie gebruiken als u dat wilt.

Voorbeeld :16) Verwijder een bestandsregel beginnend met & eindigend met een patroon

Om een regel te verwijderen beginnend met een bepaalde string & eindigend met een andere string, gebruikt u

$ sed -e 's/^danger.*stops$//g' testfile.txt

Dit verwijdert de regel met ‘gevaar’ aan het begin & ‘stopt’ aan het eind & er kan een willekeurig aantal woorden tussen staan , ‘.*’ definieert dat deel.

Voorbeeld :17) Regels toevoegen

Om voor elke regel wat inhoud toe te voegen met sed & regex, gebruik

$ sed -e 's/.*/testing sed &/' testfile.txt

Zo zal nu voor elke regel ‘testing sed’ staan.

Exemplaar :18) Verwijderen van alle becommentarieerde regels & lege regels

Om alle becommentarieerde regels te verwijderen, d.w.z. regels met # & alle lege regels, gebruik

$ sed -e 's/#.*//;/^$/d' testfile.txt

Om alleen becommentarieerde regels te verwijderen, gebruik

$ sed -e 's/#.*//' testfile.txt

Exemplaar :19) Verkrijg lijst van alle gebruikersnamen uit /etc/passwd

Om de lijst van alle gebruikersnamen uit /etc/passwd bestand te verkrijgen, gebruikt u

$ sed 's/\(*\).*/\1/' /etc/passwd

een volledige lijst van alle gebruikersnamen zal op het scherm als uitvoer worden gegenereerd.

Voorbeeld :20) Voorkom overschrijven van systeem links met sed commando

‘sed -i’ commando staat er om bekend dat het systeem links verwijdert & creëert alleen normale bestanden in plaats van het link bestand. Dus om zo’n situatie te voorkomen & voorkom dat ‘sed -i’ de links vernietigd, gebruik ‘-follow-symklinks’ opties bij het commando dat wordt uitgevoerd.

Laten we aannemen dat ik SELinux wil uitschakelen op CentOS of RHEL Severs

# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *