Cserélje le a szöveg utolsó előfordulását egy karakterláncban:
Ez a szakasz bemutatja, hogy a keresési minta legutóbbi előfordulása egy karakterláncban hogyan pótolható a 'sed' paranccsal.
1. példa: Cserélje le a szó utolsó előfordulását a minta alapján
A következő „sed” parancs keresni fogja a szót 'PHP' a karakterláncban, és cserélje le a kereső szót a szóra 'AngularJS' ha a szó létezik a karakterláncban.
$ echo "Java PHP Bash Python JavaScript PERL PHP Laravel" |sed / s (.* \) PHP / \ 1AngularJS / '
A következő kimenet jelenik meg a parancs futtatása után. Itt a szó 'PHP' kétszer létezik a karakterláncban, és az utolsó előfordulást a " SzögletesJS".
2. példa: Cserélje le a számjegyalapú minta utolsó előfordulását
A következő „sed” parancs a karakterlánc bármely számjegyét megkeresi, és az utolsó számjegyet a számmal helyettesíti 9.
$ echo "Az első számláló értéke 2. A második számláló értéke 4 "|sed / s (.* \) [0-9]) * / \ 19 / '
A következő kimenet jelenik meg a parancs futtatása után. Itt a számjegy kétszer jelenik meg a karakterláncban, és az utolsó számjegy, 4, helyébe a szám lépett 9.
3. példa: Cserélje ki a szám utolsó számjegyét a minta alapján
A következő „sed” paranccsal a karakterláncban szereplő utolsó számjegy helyébe a kettős nulla (0 0) érték lép.
$ echo "A termék ára 500 USD."| sed 's / \ (.* \) [0-9] / \ 100 / 'A következő kimenet jelenik meg a parancs futtatása után. Itt, 500 létezik a karakterlánc értékében. Tehát a csere parancs szerint az utolsó nulla 500 helyébe két dupla nulla lépett, a kicserélt érték pedig 5000.
4. példa: Cserélje le a szó utolsó előfordulását egy másik szóra
A következő „sed” parancs keresni fogja a szót 'Június' a karakterláncban, és cserélje le a szó utolsó előfordulását az értékre, 'Lehet'.
$ printf "% s \ n" jan. febr. jún. ápr. jún. dec. | tr '\ n' "|sed 's / \ (.* \) Június / \ 1Május / '| tr "'\ n'
A következő kimenet jelenik meg a parancs futtatása után. Itt a szó 'Június' kétszer létezik a karakterláncban, és az utolsó előfordulást a szó váltotta fel 'Lehet'.
Cserélje le a szöveg utolsó előfordulását a fájlban:
Hozzon létre egy szöveges fájlt Értékesítés.txt a következő tartalommal tesztelheti az oktatóanyag ezen részében használt „sed” parancsot a minta alapján a szöveg utolsó előfordulásának helyettesítésére.
Értékesítés.txt
Hónap Év Összege2018. január 200 000 USD
2019 március: 300000 USD
2019. április 150000 USD
2020 március: 350000 USD
2019. május 210000 USD
2020. január 240000 USD
5. példa: Cserélje le a szó utolsó előfordulását egy másik szóra
A következő „sed” parancs keresni fogja a szót 'Január'a fájlban, és cserélje le a szó utolsó előfordulását a szóra, 'Július".
$ cat Sales.txt$ sed '$ s / január / július /' Értékesítés.txt
A parancsok futtatása után a következő kimenet jelenik meg. A szó 'Január' kétszer jelenik meg a fájlban. Az utolsó előfordulás a 7-benth a fájl sorát a szó váltotta fel 'Július'a kimenetben.
6. példa: Cserélje le egy szám utolsó előfordulását egy másik számra
„tac” parancs a fájl tartalmának megfordítására szolgál. „tac” parancs a 'sed' paranccsal a következő parancsban használható a „2019'szóval, „2017”.
$ cat Sales.txt$ tac Értékesítés.txt | sed '0, / 2019 / s / 2019/2017 /' | tac
A parancsok futtatása után a következő kimenet jelenik meg. Itt az évérték, „2019'háromszor jelenik meg a fájlban. Az első, „tac” parancs megfordította a fájl tartalmát, és a kimenetet a „sed” parancs az első előfordulásának helyettesítésére '2019' amely a fájl utolsó előfordulása évérték szerint, „2017”. Csere után a kimenetet elküldtük a „tac” parancs a kimenet újbóli megfordításához. Ilyen módon a2019"helyébe az érték lépett, „2017".
7. példa: Cseréljen le egy sort a szó utolsó előfordulása alapján
A következő „sed” parancs a sort helyettesíti egy tabulátorral (\ t) elválasztott szöveggel, ahol a sor a karakterlánccal kezdődik „Mar” az aktában utoljára.
$ cat Sales.txt$ tac Értékesítés.txt | sed '0, / ^ márc.* / s / ^ márc.* / Július \ t \ t2018 \ t $ 400000 / '| tac
A parancsok futtatása után a következő kimenet jelenik meg. A fájl két sora a karakterlánccal kezdődik, „Mar”, és ennek a karakterláncnak az utolsó előfordulása a 5th vonal. Az első „tac” parancsot használták a fájl tartalmának megfordítására és a kimenetet a 'sed ' parancs. "sed'a parancs lecserélte a sort egy szövegre,'2018. július 400 000 dollár'ahol a kereső karakterlánc először megtalálta. A kimenet a 'sed'parancsot elküldtük a „tac” parancs újra a fájl fő tartalmát jelentő kimenet visszafordításához.
Következtetés:
A „sed” paranccsal a karakterlánc bármely részét vagy egy sorát különböző módon lehet helyettesíteni reguláris kifejezésminták használatával. Ez az oktatóanyag bemutatta a keresési szöveg legutóbbi előfordulásának helyét egy karakterláncban vagy fájlban több „sed” parancs használatával. Ebben az oktatóanyagban bemutatásra került az is, hogy a 'tac' parancs hogyan használható a 'sed' paranccsal a keresett szöveg utolsó előfordulásának helyettesítésére. De az itt használt összes parancs ideiglenesen létrehozza a kimenetet. A fájl tartalmának végleges megváltoztatásához a minta alapján az '-i' opciót kell használnia a 'sed' paranccsal.