sed

Hvordan erstatte den siste forekomsten ved hjelp av 'sed'

Hvordan erstatte den siste forekomsten ved hjelp av 'sed'
'sed' -kommandoen brukes i Linux for forskjellige typer tekstoperasjoner, for eksempel sette inn, slette, erstatte osv. Ulike typer erstatningsoppgaver kan gjøres ved å bruke kommandoen 'sed' enkelt. Enhver erstatningsoppgave kan gjøres basert på søketeksten eller mønsteret. Søketeksten eller -mønsteret kan forekomme flere ganger i strengen eller en fil der søket skal utføres. Hvordan du kan erstatte den siste forekomsten av søketeksten eller mønsteret, er vist i denne veiledningen.

Erstatt den siste forekomsten av teksten i en streng:

Denne delen viser hvordan den siste forekomsten av søkemønsteret i en streng kan erstattes ved å bruke kommandoen 'sed'.

Eksempel 1: Erstatt den siste forekomsten av et ord basert på mønster

Følgende 'sed' kommando vil søke i ordet 'PHP' i strengen og erstatt søkeordet med ordet 'AngularJS' hvis ordet finnes i strengen.

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

Følgende utdata vises etter at du har kjørt kommandoen. Her, ordet 'PHP' eksisterer to ganger i strengen, og den siste forekomsten er erstattet av ordet ' AngularJS'.

Eksempel 2: Erstatt den siste forekomsten av sifferbasert mønster

Følgende 'sed' kommando vil søke på et hvilket som helst siffer i strengen og erstatte det siste sifferet med tallet 9.

$ echo "Den første tellerverdien 2. Den andre tellerverdien 4 "|
sed 's / \ (.* \) [0-9]) * / \ 19 / '

Følgende utdata vises etter at du har kjørt kommandoen. Her vises sifferet to ganger i strengen, og det siste sifferet, 4, har blitt erstattet av nummeret 9.

Eksempel 3: Erstatt det siste sifferet i et tall basert på mønster

Følgende 'sed' kommando erstatter det siste sifferet som finnes i strengverdien med verdien med dobbelt null (0 0).

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

Følgende utdata vises etter at du har kjørt kommandoen. Her, 500 finnes i strengverdien. Så, i henhold til erstatningskommandoen, den siste null av 500 har blitt erstattet av to doble null, og den erstattede verdien er 5000.

Eksempel 4: Erstatt den siste forekomsten av et ord med et annet ord

Følgende 'sed' kommando vil søke i ordet 'Juni' i strengen og erstatt den siste forekomsten av ordet med verdien, 'Kan'.

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

Følgende utdata vises etter at du har kjørt kommandoen. Her, ordet 'Juni' eksisterer to ganger i strengen, og den siste forekomsten er erstattet av ordet 'Kan'.

Erstatt den siste forekomsten av en tekst i en fil:

Lag en tekstfil med navnet Salg.tekst med følgende innhold for å teste kommandoen 'sed' som brukes i denne delen av opplæringen for å erstatte den siste forekomsten av en tekstbasert på mønsteret.

Salg.tekst

Måned År Beløp
Januar 2018 $ 200000
Mars 2019 $ 300000
April 2019 $ 150000
Mars 2020 $ 350000
Mai 2019 $ 210000
Januar 2020 $ 240000

Eksempel 5: Erstatt den siste forekomsten av et ord med et annet ord

Følgende 'sed' kommando vil søke i ordet 'Januar'i filen og erstatt den siste forekomsten av dette ordet med ordet, 'Juli'.

$ kattesalg.tekst
$ sed '$ s / januar / juli /' salg.tekst

Følgende utdata vises etter at du har kjørt kommandoene. Ordet 'Januar' vises to ganger i filen. Den siste hendelsen som eksisterte i 7th linje i filen er erstattet av ordet 'Julii utgangen.

Eksempel 6: Erstatt den siste forekomsten av et nummer med et annet nummer

'tac' kommandoen brukes til å reversere innholdet i filen. 'tac' kommandoen brukes med kommandoen 'sed' i følgende kommando for å erstatte den siste forekomsten av '2019'med ordet, 2017.

$ kattesalg.tekst
$ tac Salg.txt | sed '0, / 2019 / s / 2019/2017 /' | tac

Følgende utdata vises etter at du har kjørt kommandoene. Her er årsverdien, '2019'vises tre ganger i filen. Den første, 'tac' kommandoen har reversert innholdet i filen og sendt utdataene til 'sed' kommando for å erstatte den første forekomsten av '2019' som er den siste forekomsten i filen etter årsverdien, 2017. Etter utskiftingen er utdataene sendt til 'tac' kommando for å reversere utgangen igjen. På denne måten, den siste forekomsten av '2019'er erstattet av verdien, 2017'.

Eksempel 7: Erstatt alt av en linje basert på den siste forekomsten av et ord

Følgende 'sed' kommandoen erstatter linjen med en fane (\ t) avgrenset tekst der linjen starter med strengen 'Mar' for siste gang i filen.

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

Følgende utdata vises etter at du har kjørt kommandoene. To linjer i filen starter med strengen, 'Mar', og den siste forekomsten av denne strengen vises i 5th linje. Den første 'tac' kommandoen har blitt brukt til å reversere innholdet i filen og sendt utdataene til 'sed ' kommando. 'sed'kommandoen har erstattet linjen med en tekst,'Juli 2018 $ 400000der søkestrengen ble funnet for første gang. Produksjonen av den sedkommandoen er sendt til 'tac' kommandoen igjen for å reversere utdataene som er hovedinnholdet i filen.

Konklusjon:

'sed' -kommandoen kan brukes til å erstatte hvilken som helst del av en streng eller en linje i filen på forskjellige måter ved å bruke mønstre for vanlige uttrykk. Denne opplæringen viste hvordan du kan erstatte den siste forekomsten av søketeksten i en streng eller en fil ved å bruke flere 'sed' kommandoer. Hvordan kommandoen 'tac' kan brukes med kommandoen 'sed' for å erstatte den siste forekomsten av søketeksten, er også vist i denne opplæringen. Men alle kommandoene som brukes her, vil generere utdataene midlertidig. Du må bruke alternativet '-i' med kommandoen 'sed' for å endre innholdet i filen permanent basert på mønsteret.

Shadow of the Tomb Raider for Linux Tutorial
Shadow of the Tomb Raider er det tolvte tilskuddet til Tomb Raider-serien - et action-eventyrspill-franchise opprettet av Eidos Montreal. Spillet ble ...
Hvordan øke FPS i Linux?
FPS står for Bilder per sekund. FPSs oppgave er å måle bildefrekvensen i videoavspilling eller spillprestasjoner. Med enkle ord betegnes antall uavbru...
Topp Oculus App Lab-spill
Hvis du er Oculus-hodesettinnehaver, må du være klar over sideloading. Sidelading er prosessen med å installere ikke-butikkinnhold på hodesettet. Side...