sed

Sådan udskiftes den sidste begivenhed ved hjælp af 'sed'

Sådan udskiftes den sidste begivenhed ved hjælp af 'sed'
'sed' kommando bruges i Linux til forskellige typer teksthandlinger, såsom indsættelse, sletning, udskiftning osv. Forskellige typer udskiftningsopgaver kan udføres ved let at bruge kommandoen 'sed'. Enhver udskiftningsopgave kan udføres baseret på søgeteksten eller mønsteret. Søgeteksten eller -mønsteret kan forekomme flere gange i strengen eller en fil, hvor søgningen udføres. Hvordan du kan erstatte den sidste forekomst af søgeteksten eller mønsteret er vist i denne vejledning.

Erstat den sidste forekomst af teksten i en streng:

Dette afsnit viser, hvordan den sidste forekomst af søgemønsteret i en streng kan erstattes ved hjælp af kommandoen 'sed'.

Eksempel 1: Erstat den sidste forekomst af et ord baseret på mønster

Den følgende 'sed' kommando søger efter ordet 'PHP' i strengen og udskift søgeordet med ordet 'AngularJS' hvis ordet findes i strengen.

$ echo "Java PHP Bash Python JavaScript PERL PHP Laravel" |
sed 's / \ (.* \) PHP / \ 1AngularJS / '

Følgende output vises efter kørsel af kommandoen. Her, ordet 'PHP' findes to gange i strengen, og den sidste forekomst er blevet erstattet af ordet ' AngularJS''.

Eksempel 2: Erstat den sidste forekomst af cifferbaseret mønster

Den følgende 'sed' kommando søger på ethvert ciffer i strengen og erstatter det sidste ciffer med nummeret 9.

$ echo "Den første tællerværdi 2. Den anden tællerværdi 4 "|
sed 's / \ (.* \) [0-9]) * / \ 19 / '

Følgende output vises efter kørsel af kommandoen. Her vises cifret to gange i strengen og det sidste ciffer, 4, er blevet erstattet af nummeret 9.

Eksempel 3: Erstat det sidste ciffer i et tal baseret på mønster

Følgende kommando 'sed' erstatter det sidste ciffer, der findes i strengværdien, med værdien med dobbelt nul (0 0).

$ echo "Produktprisen er $ 500."| sed's / \ (.* \) [0-9] / \ 100 / '

Følgende output vises efter kørsel af kommandoen. Her, 500 findes i strengværdien. Så ifølge udskiftningskommandoen er det sidste nul på 500 er blevet erstattet af to dobbelt nul, og den udskiftede værdi er 5000.

Eksempel 4: Erstat den sidste forekomst af et ord med et andet ord

Den følgende 'sed' kommando søger efter ordet 'Juni' i strengen og erstat den sidste forekomst af ordet med værdien, 'Kan'.

$ printf "% s \ n" Jan Feb Jun Apr Jun Dec | tr '\ n' "|
sed 's / \ (.* \) Jun / \ 1May / '| tr "'\ n'

Følgende output vises efter kørsel af kommandoen. Her, ordet 'Juni' findes to gange i strengen, og den sidste forekomst er blevet erstattet af ordet 'Kan'.

Erstat den sidste forekomst af en tekst i en fil:

Opret en tekstfil med navnet Salg.txt med følgende indhold til at teste kommandoen 'sed', der bruges i denne del af selvstudiet til erstatning af den sidste forekomst af en tekst baseret på mønsteret.

Salg.txt

Måned År Beløb
Januar 2018 $ 200000
Marts 2019 $ 300000
April 2019 $ 150000
Marts 2020 $ 350000
Maj 2019 $ 210000
Januar 2020 $ 240000

Eksempel 5: Erstat den sidste forekomst af et ord med et andet ord

Den følgende 'sed' kommando søger efter ordet 'Januar'i filen og erstat den sidste forekomst af dette ord med ordet, 'Juli''.

$ cat salg.txt
$ sed '$ s / januar / juli /' salg.txt

Følgende output vises efter kørsel af kommandoerne. Ordet 'Januar' vises to gange i filen. Den sidste forekomst, der findes i 7th linje i filen er blevet erstattet af ordet 'Julii output.

Eksempel 6: Erstat den sidste forekomst af et nummer med et andet nummer

'tac' kommando bruges til at vende indholdet af filen. 'tac' kommandoen bruges sammen med kommandoen 'sed' i den følgende kommando til at erstatte den sidste forekomst af '' 2019'med ordet, '2017'.

$ kat salg.txt
$ tac Salg.txt | sed '0, / 2019 / s / 2019/2017 /' | tac

Følgende output vises efter kørsel af kommandoerne. Her er årets værdi, '' 2019'vises tre gange i filen. Den første, 'tac' kommandoen har vendt indholdet af filen og sendt output til 'sed' kommando til at erstatte den første forekomst af '2019' som er den sidste forekomst i filen efter årværdien, '2017'. Efter udskiftningen er output sendt til 'tac' kommando for at vende output igen. På denne måde er den sidste forekomst af '2019'er blevet erstattet af værdien, 2017''.

Eksempel 7: Erstat alt på en linje baseret på den sidste forekomst af et ord

Det følgende 'sed' kommandoen erstatter linjen med en fane (\ t) afgrænset tekst, hvor linjen starter med strengen 'Mar' for sidste gang i filen.

$ cat salg.txt
$ tac Salg.txt | sed '0, / ^ Mar.* / s / ^ mar.* / Juli \ t \ t2018 \ t $ 400000 / '| tac

Følgende output vises efter kørsel af kommandoerne. To linjer i filen starter med strengen, 'Mar', og den sidste forekomst af denne streng vises i 5th linje. Den første 'tac' kommandoen er blevet brugt til at vende indholdet af filen og sendt output til 'sed ' kommando. ''sed'kommando har erstattet linjen med en tekst,'Juli 2018 $ 400000'hvor søgestrengen blev fundet for første gang. Resultatet af den 'sedkommandoen er sendt til 'tac' kommando igen for at vende det output, der er hovedindholdet i filen.

Konklusion:

kommandoen 'sed' kan bruges til at erstatte en hvilken som helst del af en streng eller en linje i filen på forskellige måder ved hjælp af mønstre med regulært udtryk. Denne tutorial viste måderne til at erstatte den sidste forekomst af søgeteksten i en streng eller en fil ved hjælp af flere 'sed' kommandoer. Hvordan kommandoen 'tac' kan bruges med kommandoen 'sed' til at erstatte den sidste forekomst af søgeteksten er også vist i denne vejledning. Men alle de kommandoer, der bruges her, genererer output midlertidigt. Du skal bruge indstillingen '-i' med kommandoen 'sed' til at ændre indholdet af filen permanent baseret på mønsteret.

Top 10 spil at spille på Ubuntu
Windows-platform har været en af ​​de dominerende platforme til spil på grund af den enorme procentdel af spil, der udvikler sig i dag til indbygget a...
5 bedste arkadespil til Linux
I dag er computere seriøse maskiner, der bruges til spil. Hvis du ikke kan få den nye høje score, ved du hvad jeg mener. I dette indlæg vil du kende n...
Kamp om Wesnoth 1.13.6 Udvikling frigivet
Kamp om Wesnoth 1.13.6 udgivet i sidste måned, er den sjette udviklingsudgivelse i 1.13.x-serien, og den leverer en række forbedringer, især til bruge...