Pakeiskite paskutinį eilutės teksto atvejį:
Šiame skyriuje parodyta, kaip paskutinį ieškos modelio eilutę galima pakeisti naudojant komandą „sed“.
1 pavyzdys: pakeiskite paskutinį žodžio atvejį pagal modelį
Ši „sed“ komanda ieškos žodžio „PHP“ eilutėje ir ieškantį žodį pakeiskite žodžiu „AngularJS“ jei eilutėje yra žodis.
"Java PHP Bash Python JavaScript PERL PHP Laravel" |sedas / \ (.* \) PHP / \ 1AngularJS / '
Paleidus komandą pasirodys toks išvestis. Čia žodis „PHP“ eilutėje egzistuoja du kartus, o paskutinis atvejis pakeistas žodžiu „ KampinisJS".
2 pavyzdys: pakeiskite paskutinį skaitmenimis pagrįstą modelį
Ši „sed“ komanda ieškos bet kurio eilutės skaitmens ir pakeis paskutinį skaitmenį skaičiumi 9.
$ echo "Pirmoji skaitiklio vertė 2. Antrojo skaitiklio vertė 4 "|sedas / \ (.* \) [0–9]) * / \ 19 / '
Paleidus komandą pasirodys toks išvestis. Čia skaitmuo eilutėje pasirodo du kartus ir paskutinis skaitmuo, 4, buvo pakeistas numeriu 9.
3 pavyzdys: pakeiskite paskutinį skaičiaus skaičių pagal modelį
Ši „sed“ komanda pakeis paskutinį skaitmenį, esantį eilutės vertėje, reikšme dvigubu nuliu (0 0).
$ echo "Produkto kaina yra 500 USD."| sed 's / \ (.* \) [0–9] / \ 100 / 'Paleidus komandą pasirodys toks išvestis. Čia, 500 yra eilutės vertėje. Taigi, pagal pakeitimo komandą, paskutinis 500 buvo pakeistas dviem dvigubais nuliais, o pakeista vertė yra 5000.
4 pavyzdys: Pakeiskite paskutinį žodžio atvejį kitu žodžiu
Ši „sed“ komanda ieškos žodžio „Birželis“ eilutėje ir pakeiskite paskutinį žodžio atvejį reikšme, 'Gegužė'.
$ printf "% s \ n" sausis vasaris birželis balandis birželis gruodis | tr '\ n' "|sedas / \ (.* \) Birželis / \ 1Gegužė / '| tr "'\ n'
Paleidus komandą pasirodys toks išvestis. Čia žodis „Birželis“ eilutėje egzistuoja du kartus, o paskutinis įvykis buvo pakeistas žodžiu 'Gegužė'.
Pakeiskite paskutinį failo teksto atvejį:
Sukurkite tekstinį failą pavadinimu Pardavimai.txt su šiuo turiniu, norėdami išbandyti komandą „sed“, naudojamą šioje mokymo programos dalyje, kad pakeistumėte paskutinį teksto atvejį pagal šabloną.
Pardavimai.txt
Mėnuo Metų suma2018 m. Sausio mėn. 200 000 USD
2019 m. Kovo mėn. 300 000 USD
2019 m. Balandžio mėn. 150000 USD
2020 m. Kovo mėn. 350000 USD
2019 m. Gegužė 210000 USD
2020 m. Sausio mėn. 240000 USD
5 pavyzdys: pakeiskite paskutinį žodžio atvejį kitu žodžiu
Ši „sed“ komanda ieškos žodžio „Sausis'ir pakeiskite paskutinį šio žodžio atvejį žodžiu, 'Liepa".
$ kačių pardavimai.txt$ sed '$ s / sausis / liepa /' Pardavimai.txt
Paleidus komandas pasirodys toks išvestis. Žodis „Sausis“ faile rodomas du kartus. Paskutinis įvykis, esantis 7tūkst failo eilutė pakeista žodžiu „Liepa'išvestyje.
6 pavyzdys: Pakeiskite paskutinį skaičiaus atvejį kitu skaičiumi
„tac“ komanda naudojama failo turiniui pakeisti. „tac“ komanda naudojama kartu su komanda „sed“ šioje komandoje, kad būtų pakeistas paskutinis „2019 m'su žodžiu, „2017“.
$ kačių pardavimai.txt$ tac Pardavimai.txt | sed '0, / 2019 / s / 2019/2017 /' | tac
Paleidus komandas pasirodys toks išvestis. Čia metų vertė, „2019 m'faile pasirodo tris kartus. Pirmas, „tac“ komanda pakeitė failo turinį ir išsiuntė išvestį į „sed“ komandą pakeisti pirmąjį „2019“ kuris yra paskutinis atvejis byloje pagal metų vertę, „2017“. Po pakeitimo išvestis buvo nusiųsta į „tac“ komanda dar kartą pakeisti išvestį. Tokiu būdu paskutinis „2019 m"pakeista reikšme, „2017 m".
7 pavyzdys: Pakeiskite viską eilutėje pagal paskutinį žodžio atvejį
Sekantis „sed“ komanda pakeis eilutę tabuliavimo ženklu (\ t) atskirtu tekstu, kur eilutė prasideda eilute „Mar“ paskutinį kartą byloje.
$ kačių pardavimai.txt$ tac Pardavimai.txt | sed '0, / ^ Kov.* / s / ^ kovas.* / Liepa \ t \ t2018 \ t 400 000 USD / '| tac
Paleidus komandas pasirodys toks išėjimas. Dvi failo eilutės prasideda eilute, „Mar“, ir paskutinis šios eilutės atvejis pasirodo 5tūkst linija. Pirmas „tac“ komanda buvo naudojama norint pakeisti failo turinį ir išsiųsti išvestį į 'sed ' komandą. "sed„komanda pakeitė eilutę tekstu“,2018 m. Liepos mėn. 400 000 USD„kur ieškoma eilutė rasta pirmą kartą. Išvestis „sedkomanda buvo išsiųsta „tac“ komandą dar kartą pakeisti išvestį, kuri yra pagrindinis failo turinys.
Išvada:
„sed“ komanda gali būti naudojama bet kokiai eilutės ar failo eilutės daliai pakeisti įvairiais būdais, naudojant reguliaraus reiškinio šablonus. Ši pamoka parodė būdus, kaip pakeisti paskutinį ieškomo teksto eilutėje ar faile atvejį naudojant kelias „sed“ komandas. Kaip „tac“ komandą galima naudoti su „sed“ komanda, norint pakeisti paskutinį ieškomo teksto atvejį, taip pat buvo parodyta šioje pamokoje. Bet visos čia naudojamos komandos laikinai sugeneruos išvestį. Norėdami visam laikui pakeisti failo turinį pagal modelį, turite naudoti parinktį „-i“ su „sed“ komanda.