sed

Kā aizstāt pēdējo gadījumu, izmantojot “sed”

Kā aizstāt pēdējo gadījumu, izmantojot “sed”
"sed" komandu Linux lieto dažāda veida teksta darbībām, piemēram, ievietošanai, dzēšanai, aizstāšanai utt. Dažādu veidu aizvietošanas uzdevumus var veikt, viegli izmantojot komandu “sed”. Jebkuru aizvietošanas uzdevumu var veikt, pamatojoties uz meklējamo tekstu vai rakstu. Teksts vai raksts, kas meklē tekstu, var būt vairākas reizes virknē vai failā, kurā tiks veikta meklēšana. Šajā apmācībā ir parādīts, kā jūs varat aizstāt meklētā teksta vai raksta pēdējo parādīšanos.

Aizstājiet virknes pēdējo teksta parādīšanos:

Šajā sadaļā ir parādīts, kā pēdējais meklēšanas modeļa parādīšanās virknē var tikt aizstāts, izmantojot komandu “sed”.

1. piemērs: aizstājiet pēdējā vārda sastopamību, pamatojoties uz modeli

Šī komanda “sed” meklēs vārdu 'PHP' virknē un meklēšanas vārdu aizstāj ar vārdu 'AngularJS' ja vārds pastāv virknē.

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

Pēc komandas palaišanas parādīsies šāda izeja. Lūk, vārds 'PHP' virknē pastāv divas reizes, un pēdējais gadījums ir aizstāts ar vārdu " StūraJS".

2. piemērs: aizstājiet pēdējo ciparu modeļa parādīšanos

Sekojošā komanda “sed” meklēs jebkuru ciparu virknē un aizstās pēdējo ciparu ar numuru 9.

$ echo "Pirmā skaitītāja vērtība 2. Otrā skaitītāja vērtība 4 "|
sed / s (.* \) [0-9]) * / \ 19 / '

Pēc komandas palaišanas parādīsies šāda izeja. Šeit cipars virknē parādās divas reizes un pēdējais cipars, 4, ir aizstāts ar numuru 9.

3. piemērs: aizstājiet skaitļa pēdējo ciparu, pamatojoties uz modeli

Šī komanda “sed” aizstās pēdējo ciparu, kas pastāv virknes vērtībā, ar vērtību ar dubultu nulli (0 0).

$ echo "Produkta cena ir 500 USD."| sed 's / \ (.* \) [0-9] / \ 100 / '

Pēc komandas palaišanas parādīsies šāda izeja. Šeit, 500 pastāv virknes vērtībā. Tātad, saskaņā ar aizstājošo komandu, pēdējā nulle no 500 ir aizstāts ar diviem dubultnulle, un aizstātā vērtība ir 5000.

4. piemērs: Aizstājiet vārda pēdējo parādīšanos ar citu vārdu

Šī komanda “sed” meklēs vārdu "Jūnijs" virknē un vārda pēdējo parādīšanos aizstāj ar vērtību, "Maijs".

$ printf "% s \ n" janvāris februāris jūnijs aprīlis jūnijs decembris | tr '\ n' "|
sed / s (.* \) Jūnijs / \ 1maijs / '| tr "'\ n'

Pēc komandas palaišanas parādīsies šāda izeja. Lūk, vārds "Jūnijs" virknē pastāv divas reizes, un pēdējais gadījums ir aizstāts ar vārdu "Maijs".

Aizstājiet failā pēdējo teksta gadījumu:

Izveidojiet teksta failu ar nosaukumu Pārdošana.txt ar šādu saturu, lai pārbaudītu komandu “sed”, kas izmantota šajā apmācības daļā, lai aizstātu pēdējo teksta gadījumu, pamatojoties uz modeli.

Pārdošana.txt

Mēnesis Gada summa
2018. gada janvāris 200 000 USD
2019. gada marts - 300 000 USD
2019. gada aprīlis 150000 USD
2020. gada marts 350000 USD
2019. gada maijs 210000 USD
2020. gada janvāris 240000 USD

5. piemērs: Aizstājiet vārda pēdējo parādīšanos ar citu vārdu

Šī komanda “sed” meklēs vārdu "Janvāris'un aizstājiet šī vārda pēdējo parādīšanos ar vārdu, "Jūlijs".

$ kaķu pārdošana.txt
$ sed '$ s / janvāris / jūlijs /' Pārdošana.txt

Pēc komandu palaišanas parādīsies šāda izeja. Vārds "Janvāris" failā parādās divas reizes. Pēdējais gadījums, kas pastāv 7th faila rindiņa ir aizstāta ar vārdu "Jūlijs'izvadē.

6. piemērs: Nomainiet skaitļa pēdējo parādīšanos ar citu skaitli

"tac" komandu izmanto, lai mainītu faila saturu. "tac" komandu aizstāj ar komandu “sed” šajā komandā, lai aizstātu pēdējo "2019'ar vārdu, "2017".

$ kaķu pārdošana.txt
$ tac Pārdošana.txt | sed '0, / 2019 / s / 2019/2017 /' tac

Pēc komandu palaišanas parādīsies šāda izeja. Lūk, gada vērtība, "2019'failā parādās trīs reizes. Pirmais, "tac" komanda ir mainījusi faila saturu un nosūtījusi izvadi "sed" komandu, lai aizstātu pirmo "2019" kas ir pēdējais gadījums failā pēc gada vērtības, "2017". Pēc nomaiņas produkcija ir nosūtīta "tac" vēlreiz mainīt izvadi. Tādā veidā pēdējais2019. gads'ir aizstāts ar vērtību, "2017".

7. piemērs: Aizvietojiet visu rindā, pamatojoties uz vārda pēdējo sastopamību

Sekojošais "sed" komanda aizstās līniju ar tabulētu (\ t) norobežotu tekstu, kur rinda sākas ar virkni "Mar" pēdējo reizi failā.

$ kaķu pārdošana.txt
$ tac Pārdošana.txt | sed '0, / ^ marts.* / s / ^ marts.* / Jūlijs \ t \ t2018 \ t $ 400000 / '| tac

Pēc komandu palaišanas parādīsies šāda izeja. Divas faila rindas sākas ar virkni, "Mar", un pēdējais šīs virknes gadījums parādās 5th līnija. Pirmais "tac" komanda tika izmantota, lai mainītu faila saturu un nosūtītu izvadi uz 'sed ' komandu. "sed'komanda ir aizstājusi rindu ar tekstu, "2018. gada jūlijs 400 000 USD', kur meklēšanas virkne tika atrasta pirmo reizi. Rezultāts “sed'komanda ir nosūtīta "tac" komandu vēlreiz, lai mainītu izvadi, kas ir faila galvenais saturs.

Secinājums:

'sed' komandu var izmantot, lai dažādos veidos aizstātu jebkuru virknes daļu vai faila rindu, izmantojot regulāras izteiksmes modeļus. Šī apmācība parādīja veidus, kā aizstāt pēdējo meklēšanas tekstu virknē vai failā, izmantojot vairākas komandas “sed”. Šajā pamācībā ir parādīts, kā komandu “tac” var izmantot ar komandu “sed”, lai aizstātu pēdējo meklēšanas teksta gadījumu. Bet visas šeit izmantotās komandas īslaicīgi ģenerēs izvadi. Lai pastāvīgi mainītu faila saturu, pamatojoties uz modeli, jums jāizmanto opcija '-i' ar komandu 'sed'.

Labākie Linux spēļu draiveri 2021. gadā
Linux operētājsistēma ir gājusi tālu no sākotnējā, vienkāršā uz serveriem balstītā izskata. Šī operētājsistēma pēdējos gados ir ārkārtīgi uzlabojusies...
Kā tvert un straumēt spēļu sesiju operētājsistēmā Linux
Agrāk spēļu spēlēšana tika uzskatīta tikai par hobiju, taču laika gaitā spēļu industrija piedzīvoja milzīgu tehnoloģiju un spēlētāju skaita pieaugumu....
Labākās spēles, ko spēlēt ar rokas izsekošanu
Oculus Quest nesen iepazīstināja ar lielisku ideju par rokas izsekošanu bez kontrolieriem. Ar arvien lielāku spēļu un aktivitāšu skaitu, kas atbalsta ...