Linux is een systeem vol commando's waarbij elk een essentiële rol speelt in het gedrag van bepaalde taken, of het nu gaat om gebruikers-, object- of ondersteuningsbeheer, elk commando heeft zijn deelname aan Linux en een van deze commando's is Sed waarover we het zullen hebben bij Solvetic in detail.
Wat is het sed-commando in LinuxHet sed-commando is letterlijk een stroomeditor die we kunnen gebruiken om werken aan de tekst te wijzigen met basisfuncties in een invoerstroom, hetzij vanuit een bestand of invoer vanuit een pijplijn, indien van toepassing.
In tegenstelling tot andere teksteditors, is het met sed mogelijk om tekst in een pijplijn te filteren terwijl we de geselecteerde inhoud doornemen.
VoordeelDe voordelen van het gebruik van sed op Linux zijn:
- We kunnen tekst selecteren
- We kunnen tekst vervangen
- Regels aan tekst toevoegen
- We kunnen regels uit de tekst verwijderen
- Hiermee kunt u een origineel bestand wijzigen of behouden
De algemene syntaxis voor het gebruik van sed is als volgt:
sed OPTIES… [SCRIPT] [INPUT_FILE…]We zullen enkele manieren leren om deze opdracht op Linux te gebruiken.
1. Hoe de SED-opdracht in Linux te gebruiken
Basisgebruik van sedVoor dit voorbeeld gaan we "echo" gebruiken om te zien hoe het sed-commando een deel van de ingevoerde tekst kan vervangen, we voeren in:
echo solvitisch | sed 's / vitic / vetic /'In dit geval vertellen we sed om het woord "vitic" te vervangen door "vetic", wanneer u op Enter drukt, is dit het resultaat:
VERGROTEN
We zien dat de verandering automatisch gaat.
2. Tekst selecteren met het SED Linux-commando
Stap 1
In dit geval hebben we een tekstbestand dat op het bureaublad wordt gehost:
VERGROTEN
Nu gebruiken we de volgende regel:
minder Solvetic.txtStap 2
Als je op Enter drukt, is dit het resultaat:
VERGROTEN
Met sed is het mogelijk om enkele regels van het bestand te selecteren, hiervoor moeten we de eerste en laatste regels van het te selecteren bereik aangeven, bijvoorbeeld als we regels twee tot zeven willen extraheren, voeren we uit:
sed -n '2,7p' Solvetic.txtStap 3
We zullen het volgende zien:
VERGROTEN
We moeten rekening houden met de komma in de toe te wijzen reeksen (2,7), de parameter p geeft aan dat het "print overeenkomende regels" betekent, hiermee zal het sed-commando alle regels van dat bereik afdrukken en de -n (stille ) optie zorgt ervoor dat er geen tekst wordt weergegeven die niet overeenkomt met dat bereik.
Stap 4
We kunnen de -e (expressie) parameter gebruiken om meerdere selecties te maken, bijvoorbeeld:
sed -n -e '1,2p' -e '5,6p' Solvetic.txt
VERGROTEN
Stap 5
Met sed is het mogelijk om de startlijn te selecteren, dan geven we aan welke in het bestand moet worden doorlopen en om de alternatieve lijnen af te drukken, voeren we bijvoorbeeld in:
sed -n '1 ~ 3p' Solvetic.txtIn dit geval verwijst het eerste cijfer naar de startlijn en het tweede cijfer vertelt sed welke lijnen na de startlijn getoond zullen worden:
VERGROTEN
Stap 6
Een ander gebruik van sed is de mogelijkheid om regels te selecteren waarin de overeenkomende tekstpatronen zijn, dit als we niet weten waar het regelnummer vandaan komt, kunnen we het volgende uitvoeren:
sed -n '/ Run / p' Solvetic.txt
VERGROTEN
We zullen de regels zien die met die term beginnen.
3. Vervangingen maken met SED Linux
Stap 1
In het basisgedeelte zagen we hoe we tekst kunnen vervangen met sed, daar gebruikten we de -s (substitutie) parameter. Vervolgens geeft de eerste string het zoekpatroon aan en de tweede verwijst naar de tekst waarmee deze wordt vervangen.
sed -n 's / taken / acties / p' Solvetic.txtIn dit voorbeeld vervangen we "taken" door "acties":
VERGROTEN
Stap 2
Met de parameter psed stopt het automatisch na de eerste match, om een globale zoekopdracht uit te voeren en de wijziging in het algemeen aan te brengen, moeten we "g" toevoegen:
sed -n 's / taken / acties / gp' Solvetic.txtAls we willen dat het niet hoofdlettergevoelig is, voegen we de "i" toe:
sed -n 's / taken / acties / gpi' Solvetic.txtStap 3
Het is mogelijk om beperkingen op vervangingen in te stellen voor alleen bepaalde secties van het bestand. Allereerst vermelden we de regels die moeten worden geanalyseerd:
sed -n '1,3p' Solvetic.txt
VERGROTEN
Stap 4
Laten we het volgende bekijken, we kunnen vinden waar er twee spaties zijn en ze vervangen door één:
sed -n '1.3 s / * / / gp' Solvetic.txtDe asterisk (*) staat voor nul of meer van het eerder geselecteerde teken.
Stap 5
U kunt het zoekpatroon terugbrengen tot een enkele spatie met de volgende opdracht:
sed -n '1.3 s / * / / gp' Solvetic.txtWe zien het verschil in de resultaten:
VERGROTEN
In het laatste geval komt het sterretje overeen met nul of meer van het vorige teken, hierdoor ziet elk niet-spatieteken eruit als een "nul spatie" door het commando toe te passen.
Stap 6
Om twee of meer vervangingen tegelijkertijd uit te voeren, voeren we uit:
sed -n -e 's / uitgevoerd / toegepast / gip' -e 's / taken / acties / gip' Solvetic.txt
VERGROTEN
4. SED-vervangingsopties op Linux
We kunnen ook sed gebruiken om bestandsnamen uit het systeem te halen, in dit geval moeten we er rekening mee houden dat elk object moet overeenkomen met een zoekpatroon (subexpressies) dat kan worden genummerd (tot maximaal negen elementen).
Stap 1
Deze nummers kunnen vervolgens worden gebruikt om naar specifieke subexpressies te verwijzen.
De subexpressie moet tussen haakjes [()] staan en de haakjes moeten worden voorafgegaan door een backslash (\) zodat ze niet als een normaal teken worden herkend, bijvoorbeeld:
sed 's / \ ([^:] * \). * / \ 1 /' / etc / passwd
VERGROTEN
De variabelen die in deze opdracht worden gebruikt, zijn:
- sed 's /: geeft het sed-commando en het begin van de vervangende uitdrukking aan.
- \ (: omsluit de subexpressie, voorafgegaan door een backslash
- [^:] *: is de eerste subexpressie van de zoekterm die een groep tussen haakjes bevat, het caretteken (^) betekent "nee" wanneer gebruikt in een groep, dat wil zeggen elk teken dat geen dubbele punt is
- \): Het haakje sluiten [)] met een backslash
- *: is de tweede zoeksubexpressie die "elk teken en een willekeurig aantal hiervan" aangeeft.
- / \ 1: is het vervangende deel van de uitdrukking dat een cijfer 1 bevat, voorafgegaan door een backslash (\) en geeft aan dat de tekst overeenkomt met de eerste subuitdrukking
- / ': beëindig het sed-commando
Stap 2
Met het vorige commando hebben we gezocht naar elke tekenreeks die geen dubbele punt bevat, aangezien elke regel van het / etc / passwd-bestand begint met de gebruikersnaam die eindigt op een dubbele punt. We kunnen die waarde vervangen door de gebruikersnaam te isoleren met de volgende opdracht:
sed 's / \ ([^:] * \) \ (. * \) / \ 2 /' / etc / passwd
VERGROTEN
Stap 3
We kunnen alleen de gebruikersnamen weergeven met het volgende commando:
sed 's /:.*// "/ etc / passwdEen andere optie met sed is om de c (cut - cut) parameter te gebruiken om tekst in een bestand te vervangen, bijvoorbeeld:
sed '/ Linux / c Linux-besturingssysteem' Solvetic.txt
VERGROTEN
5. Voeg regels en tekst in met SED in Linux
Stap 1
Een andere taak om te gebruiken met sed is om nieuwe regels en tekst in een bestand in te voegen, in dit geval hebben we de volgende gegevens:
VERGROTEN
Stap 2
We kunnen een nieuwe regel invoegen die aangeeft waaronder deze wordt ingevoegd:
sed '/ Ub / a -> Ingevoegd!' Solvetic.txt
VERGROTEN
Stap 3
Het is ook mogelijk om de opdracht Invoegen (i) te gebruiken om een nieuwe regel boven de overeenkomst in te voegen:
sed '/ Wi / i -> Ingevoegd!' Solvetic.txt
VERGROTEN
Stap 4
We kunnen het ampersand-teken (&) gebruiken om nieuwe tekst toe te voegen aan een overeenkomende regel in het bestand, we voeren uit:
sed 's /.*/--> Ingevoegd & /' Solvetic.txt
VERGROTEN
6. Hoe een regel te verwijderen met SED Linux
Voor dit geval moeten we de parameter d (delete) gebruiken om bijvoorbeeld de tweede regel die we uitvoeren te verwijderen:
sed '2d' Solvetic.txt
VERGROTEN
Indien nodig kunnen we een bereik verwijderen:
sed '1,4d' Solvetic.txtOm lijnen buiten een bereik te verwijderen, moeten we een uitroepteken (!) gebruiken als volgt:
sed '2,4!d' Solvetic.txt
7. Wijzigingen opslaan met SED in Linux
Stap 1
Om de aangebrachte wijzigingen toe te passen, is het mogelijk om de optie In-place (-i) te gebruiken zodat sed de wijzigingen naar het originele bestand kan schrijven, maar voor meer veiligheid kunnen we als volgt een back-upextensie toevoegen (we hebben een back-up de regels met het woord Wi):
sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txtWe zetten de inhoud op een rij:
kat Solvetic.txt.bak
VERGROTEN
Stap 2
Het is mogelijk om de uitvoer om te leiden naar een nieuw bestand met dezelfde resultaten:
sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt> Solvetic1.txt
VERGROTEN
Met sed kunnen we in Linux op een volledig complete manier met de bestanden werken, aangezien we alle gebruiksopties hebben gezien.