Linux är ett system fullt av kommandon där var och en spelar en viktig roll i beteendet för vissa uppgif.webpter, oavsett om de är användar-, objekt- eller supporthantering, varje kommando har sitt deltagande i Linux och ett av dessa kommandon är Sed som vi kommer att prata om på Solvetic i detaljer.
Vad är sed -kommandot i LinuxSed -kommandot är bokstavligen en flödesredigerare som vi kan använda för att modifiera texten med grundläggande funktioner i ett inmatningsflöde antingen från en fil eller om det är möjligt från en pipeline.
Till skillnad från andra textredigerare är det med sed möjligt att filtrera text i en pipeline när vi går över det valda innehållet.
FördelFördelarna med att använda sed på Linux är:
- Vi kan välja text
- Vi kan ersätta text
- Lägg till rader i texten
- Vi kan ta bort rader från texten
- Låter dig ändra eller bevara en originalfil
Den allmänna syntaxen för att använda sed är följande:
sed ALTERNATIV… [SCRIPT] [INPUT_FILE…]Vi kommer att lära oss några sätt att använda det här kommandot på Linux.
1. Hur man använder SED -kommandot i Linux
Grundläggande användning av sedI det här exemplet kommer vi att använda "echo" för att se hur sed -kommandot kan ersätta en del av den inmatade texten, vi anger:
echo solvitic | sed 's / vitic / vetic /'I det här fallet säger vi till sed att ersätta ordet "vitic" med "vetic", när du trycker på Enter blir detta resultatet:
FÖRSTORA
Vi ser att förändringen sker automatiskt.
2. Markera text med SED Linux -kommandot
Steg 1
I det här fallet kommer vi att ha en textfil som finns på skrivbordet:
FÖRSTORA
Nu kommer vi att använda följande rad:
mindre Solvetic.txtSteg 2
När du trycker på Enter kommer detta att bli resultatet:
FÖRSTORA
Med sed är det möjligt att välja några rader i filen, för detta måste vi ange de första och sista raderna i intervallet för att välja, till exempel om vi vill extrahera rader två till sju vi kör:
sed -n '2,7p' Solvetic.txtSteg 3
Vi kommer att se följande:
FÖRSTORA
Vi måste komma ihåg kommatecken i de områden som ska tilldelas (2,7), parametern p indikerar att det betyder "skriva ut matchande rader", med detta kommer sed -kommandot att skriva ut alla rader inom det intervallet och -n (tyst ) alternativet tar hand om att inte visa text som inte matchar det intervallet.
Steg 4
Vi kan använda parametern -e (uttryck) för att göra flera val, till exempel:
sed -n -e '1,2p' -e '5,6p' Solvetic.txt
FÖRSTORA
Steg 5
Med sed är det möjligt att välja startlinjen, sedan anger vi vilken som ska korsas i filen och för att skriva ut de alternativa raderna, till exempel anger vi:
sed -n '1 ~ 3p' Solvetic.txtI det här fallet hänvisar det första numret till startlinjen och det andra talet anger sed vilka rader efter startlinjen som ska visas:
FÖRSTORA
Steg 6
En annan användning av sed är möjligheten att välja rader där de matchande textmönstren finns, detta om vi inte vet varifrån radenumret kommer kan vi utföra följande:
sed -n ' / Run / p' Solvetic.txt
FÖRSTORA
Vi kommer att se linjerna som börjar med den termen.
3. Hur man skapar ersättningar med SED Linux
Steg 1
I den grundläggande delen såg vi hur man byter ut text med sed, där använde vi parametern -s (substitution). Sedan anger den första strängen sökmönstret och den andra hänvisar till texten som den kommer att ersättas med.
sed -n 's / tasks / actions / p' Solvetic.txtI det här exemplet ersätter vi "uppgif.webpter" med "åtgärder":
FÖRSTORA
Steg 2
Med parametern p sed stannar den automatiskt efter den första matchen, för att utföra en global sökning och göra ändringen i allmänhet måste vi lägga till "g":
sed -n 's / tasks / actions / gp' Solvetic.txtOm vi vill att det ska vara skiftlägeskänsligt lägger vi till "i":
sed -n 's / tasks / actions / gpi' Solvetic.txtSteg 3
Det är möjligt att skapa begränsningar för ersättningar endast för vissa delar av filen, först listar vi raderna som ska analyseras:
sed -n '1,3p' Solvetic.txt
FÖRSTORA
Steg 4
Låt oss se följande, vi kan hitta var det finns två mellanslag och ersätta dem med ett:
sed -n '1.3 s / * / / gp' Solvetic.txtAsterisken (*) representerar noll eller mer av det tidigare valda tecknet.
Steg 5
Du kan minska sökmönstret till ett enda utrymme med följande kommando:
sed -n '1.3 s / * / / gp' Solvetic.txtVi ser skillnaden i resultaten:
FÖRSTORA
I det senare fallet matchar asterisken noll eller mer av det tidigare tecknet, detta får varje icke-mellanslagstecken att se ut som ett "nollutrymme" genom att använda kommandot.
Steg 6
För att göra två eller flera byten samtidigt utför vi:
sed -n -e 's / executed / applied / gip' -e 's / tasks / actions / gip' Solvetic.txt
FÖRSTORA
4. Alternativ för SED -ersättning på Linux
Vi kan också använda sed för att extrahera filnamn från systemet, i det här fallet måste vi komma ihåg att varje objekt måste matcha ett sökmönster (subuttryck) som kan numreras (upp till högst nio element).
Steg 1
Dessa nummer kan sedan användas för att referera till specifika underuttryck.
Överuttrycket måste vara inneslutet inom parentes [()] och parenteserna måste föregås av ett snedstreck (\) så att de inte upptäcks som ett normalt tecken, till exempel:
sed 's / \ ([^:] * \). * / \ 1 /' / etc / passwd
FÖRSTORA
De variabler som används i detta kommando är
- sed 's /: anger sed -kommandot och början på ersättningsuttrycket.
- \ (: bifoga subexpressionen, föregående av ett snedstreck
- [^:] *: är den första superexpressionen av söktermen som innehåller en grupp mellan parenteser. Huvudtecknet (^) betyder "nej" när det används i en grupp, det vill säga alla tecken som inte är ett kolon
- \): Den avslutande parentesen [)] med ett snedstreck
- . *: är den andra subexpressionen i sökningen som anger "vilket tecken som helst och ett antal av dessa".
- / \ 1: är ersättningsdelen av uttrycket som innehåller ett tal 1 som föregås av ett snedstreck (\) och indikerar att texten matchar det första subexpressionen
- / ': avsluta sed -kommandot
Steg 2
Med föregående kommando har vi sökt efter en teckensträng som inte innehåller ett kolon, eftersom varje rad i filen / etc / passwd börjar med användarnamnet som slutar med ett kolon. Vi kan ersätta det värdet genom att isolera användarnamnet med följande kommando:
sed 's / \ ([^:] * \) \ (. * \) / \ 2 /' / etc / passwd
FÖRSTORA
Steg 3
Vi kan bara visa användarnamnen med följande kommando:
sed 's /:.*// "/ etc/ passwdEtt annat alternativ med sed är att använda parametern c (cut - cut) för att ersätta text i en fil, till exempel:
sed ' / Linux / c Linux operativsystem' Solvetic.txt
FÖRSTORA
5. Infoga rader och text med SED i Linux
Steg 1
En annan uppgif.webpt att använda med sed är att infoga nya rader och text i en fil, i det här fallet har vi följande data:
FÖRSTORA
Steg 2
Vi kan infoga en ny rad som anger nedanför vilken den ska infogas:
sed ' / Ub / a -> Infogat!' Solvetic.txt
FÖRSTORA
Steg 3
Det är också möjligt att använda kommandot Infoga (i) för att infoga en ny rad ovanför matchningen:
sed ' / Wi / i -> Infogat!' Solvetic.txt
FÖRSTORA
Steg 4
Vi kan använda ampersand -tecknet (&) för att lägga till ny text till en matchande rad i filen, kör vi:
sed 's /.*/--> Infogad & /' Solvetic.txt
FÖRSTORA
6. Hur man tar bort en rad med SED Linux
I det här fallet måste vi använda parametern d (ta bort), för att ta bort till exempel den andra raden vi kör:
sed '2d' Solvetic.txt
FÖRSTORA
Vi kan ta bort ett intervall om det behövs:
sed '1,4d' Solvetic.txtFör att ta bort linjer utanför ett intervall måste vi använda ett utropstecken (!) Så här följer:
sed '2,4! d' Solvetic.txt
7. Hur man sparar ändringar med SED i Linux
Steg 1
För att tillämpa de gjorda ändringarna är det möjligt att använda alternativet På plats (-i) för att sed ska kunna skriva ändringarna till den ursprungliga filen, men för ökad säkerhet kan vi lägga till en backup-tillägg enligt följande (vi har säkerhetskopierat raderna som innehåller ordet Wi):
sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txtVi listar innehållet:
katt Solvetic.txt.bak
FÖRSTORA
Steg 2
Det är möjligt att omdirigera utdata till en ny fil med samma resultat:
sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt> Solvetic1.txt
FÖRSTORA
Med sed kan vi arbeta med filerna på ett helt komplett sätt i Linux eftersom vi har sett alla användningsalternativ.