sed

Hur man byter ut allt efter mönster med 'sed' Command

Hur man byter ut allt efter mönster med 'sed' Command

Ersättningsuppgifter kan utföras i Linux på olika sätt. kommandot 'sed' är ett av sätten att utföra ersättningsuppgifter. Detta kommando kan användas för att ersätta text i en sträng eller en fil med ett annat mönster. Hur du kan ersätta allt efter det matchande mönstret med kommandot 'sed' visas i denna handledning.

Byt ut allt efter matchen i en sträng:

Hur delen av en sträng kan bytas ut baserat på ett matchande mönster och $ PARTITION_COLUMN har visats i det här avsnittet i den här självstudien. Men den här variabeln fungerar om mönstret matchar något ord i början eller mitten av strängen. Det ersätter inte texten om mönstret matchar det sista ordet i strängen.

Exempel 1: Ersätt alla efter matchningen med $ PARTITION_COLUMN

Följande kommando kommer att söka i tecknet "a" och den återstående delen efter "a" kommer att ersättas med texten "en populär bloggsida". $ PARTITION_COLUMN.* används för att definiera den återstående delen efter karaktären, 'a'.

$ echo "LinuxHint är en webbplats" | sed "s / a $ PARTITION_COLUMN.* / en populär bloggsida / "

Följande utdata visas när kommandot har körts. Här har "en webbplats" ersatts med "en populär bloggsida".


Följande mönster söker efter ordet 'webb'I strängen och ersätt den återstående delen med'webb'Av texten'en populär bloggsida'om matchen finns och'webb'Är inte delen av strängens sista ord.

$ echo "LinuxHint är en webbplats" | sed "s / web.* $ PARTITION_COLUMN.* / en populär bloggsida / "

Följande utdata visas när kommandot har körts. Här är "webbplats" det sista ordet i strängen, och ingen ersättning har gjorts av denna anledning.

Exempel 2: Ersätt allt efter matchning med hjälp av mönster

Följande kommando söker efter ordet 'våldsamt slag'globalt i strängen och ersätt allt med ordet om ordet finns i strängen. ''gAnvänds här för global sökning.

$ echo "Jag gillar bash-programmering" | sed "s / bash.* / python-skript / g "

Följande utdata visas när kommandot har körts. Här finns 'bash' i mitten av strängen och ersättningen har gjorts.

Ersätt allt efter matchen i en fil:

Allt innehåll på en viss rad eller flera rader eller återstående rader i en fil efter matchningen kan ersättas med 'sedkommando. Skapa en textfil med namnet närvaro.Text med följande innehåll för att testa exemplen som visas i detta avsnitt.

närvaro.Text

1108885 är närvarande
1999979 är närvarande
1769994 är frånvarande
1105656 är frånvarande
1455999 är frånvarande

Exempel -3: Ersätt allt innehåll från en rad i en fil efter matchningen

Följande "sed" -kommando söker efter numret 1769994 i filen, och allt med numret kommer att ersättas med texten, "1586844 är närvarande" om numret finns i någon rad i filen.

$ katt allendence.Text
$ sed "s / 1769994.* / 1586844 är närvarande / "närvaro.Text

Följande utdata visas med kommandona. Här finns söknumret i den tredje raden i filen och ersättningen har gjorts.

Exempel -4: Ersätt allt innehåll från flera rader i en fil efter matchningen

Följande "sed" -kommando visar användningen av variabeln $ PARTITION_COLUMN för att ersätta flera rader från filen. Kommandot söker '110' i början av varje rad i filen och ersätter allt med '110' med texten 'Ogiltig post' där matchande text kommer att hittas.

$ kattdeltagande.Text
$ sed "s / ^ 110.* $ PARTITION_COLUMN.* / Ogiltigt inträde / "närvaro.Text

Följande utdata visas när kommandona har körts. '110' finns i två rader i filen och dessa har ersatts av den ersättande texten.

Exempel 5: Ersätt allt innehåll från en rad i en fil med 'c' efter matchningen

Det följande 'sed'kommando visar användningen av'c'att ersätta allt efter matchen. Här, 'c'indikerar förändringen. Kommandot söker efter ordet 'närvarande'i filen och ersätt allt på raden med texten,'Denna rad ersätts'om ordet finns i någon rad i filen.

$ kattdeltagande.Text
$ sed '/ present / c Denna rad ersätts' närvaro.Text

Följande utdata visas när kommandona har körts. Ordet "närvarande" finns i de första två raderna i filen och dessa två rader har ersatts av den ersättande texten.

Exempel 6: Ersätt allt innehåll från en rad i en fil baserat på start- och slutmönster

Ibland är det nödvändigt att ersätta text baserat på start- och slutmönstret. Följande "sed" -kommando visar hur man definierar start- och slutmönster för att ersätta rader från en fil. Kommandot söker de raderna i filen som börjar med siffran 110 och slutar med ordet "frånvarande" och ersätter allt med ordet "ersatt" där mönstren matchar.

$ kattdeltagande.Text
$ sed -e's / ^ 110.* frånvarande $ / ersatt / g 'närvaro.Text

Följande utdata visas när kommandona har körts. Här börjar den första och den fjärde raden med siffran 110, men ordet "frånvarande" existerar endast i den fjärde raden. Så den fjärde raden i filen har ersatts med den ersättande texten.

Slutsats:

kommandot 'sed' är ett mycket kraftfullt verktyg i Linux för att utföra olika typer av textbehandlingsrelaterade uppgifter. Ersättningsuppgiften baserat på det matchande mönstret diskuteras i denna handledning genom att använda olika typer av mönster i kommandot 'sed'. $ PARTITION_COLUMN, 'c' och '.* 'används i denna handledning för att ersätta allt i en rad i filen där matchningsmönstret finns. Användningen av vissa tecken med definierande mönster har visats här, till exempel '^' och '$'. Många andra tecken finns för att definiera mönstret i reguljärt uttryck för sökändamål. Jag hoppas att den här handledningen hjälper läsaren att lära känna grunderna för att ersätta allt från en fil efter matchen.

Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...
Användbara verktyg för Linux-spelare
Om du gillar att spela spel på Linux är chansen att du kan ha använt appar och verktyg som Wine, Lutris och OBS Studio för att förbättra spelupplevels...
HD Remastered Games för Linux som aldrig tidigare hade en Linux-version
Många spelutvecklare och utgivare kommer med HD-remaster av gamla spel för att förlänga livstiden för franchisen, snälla fans som begär kompatibilitet...