sed

Kako zamenjati vse po vzorcu z ukazom 'sed'

Kako zamenjati vse po vzorcu z ukazom 'sed'

Nadomestna opravila lahko v Linuxu opravite na različne načine. ukaz 'sed' je eden od načinov za nadomestno nalogo. Ta ukaz lahko uporabite za zamenjavo besedila v nizu ali datoteki z drugačnim vzorcem. V tej vadnici je prikazano, kako lahko po ujemajočem se vzorcu z ukazom 'sed' zamenjate vse.

Vse po tekmi zamenjajte v nizu:

Kako je mogoče del niza zamenjati na podlagi ujemajočega se vzorca in $ PARTITION_COLUMN, je prikazano v tem razdelku te vadnice. Toda ta spremenljivka deluje, če se vzorec ujema s katero koli besedo na začetku ali sredi niza. Besedila ne bo nadomestilo, če se vzorec ujema z zadnjo besedo niza.

Primer-1: Zamenjajte vse po tekmi s pomočjo $ PARTITION_COLUMN

Naslednji ukaz bo poiskal znak 'a', preostali del za 'a' pa bo nadomestil besedilo, "priljubljeno spletno mesto". $ PARTITION_COLUMN.* se uporablja za določitev preostalega dela za znakom, 'a'.

$ echo "LinuxHint je spletno mesto" | sed "s / a $ PARTITION_COLUMN.* / priljubljeno spletno mesto / "

Po zagonu ukaza se prikaže naslednji izhod. Tu je "spletno mesto" zamenjano s "priljubljeno spletno mesto".


Naslednji vzorec bo poiskal besedo 'splet'V nizu in nadomestite preostali del z'splet"Z besedilom,"priljubljeno spletno mesto'če ujemanje obstaja in'splet'Ni del zadnje besede v nizu.

$ echo "LinuxHint je spletno mesto" | sed "s / splet.* $ PARTITION_COLUMN.* / priljubljeno spletno mesto / "

Po zagonu ukaza se prikaže naslednji izhod. Tu je "spletno mesto" zadnja beseda niza, zato zamenjava ni bila izvedena.

Primer-2: Zamenjajte vse po tekmi z vzorcem

Naslednji ukaz bo poiskal besedo 'bash'globalno v nizu in vse nadomestite z besedo, če beseda obstaja v nizu. "g'Se tukaj uporablja za globalno iskanje.

$ echo "Všeč mi je bash programiranje" | sed "s / bash.* / python script / g "

Po zagonu ukaza se prikaže naslednji izhod. Tukaj v sredini niza obstaja "bash" in zamenjava je bila opravljena.

Po tekmi zamenjajte vse v datoteki:

Vso vsebino določene vrstice ali več vrstic ali preostalih vrstic datoteke po ujemanju je mogoče nadomestiti z uporabo 'sedukaz. Ustvarite besedilno datoteko z imenom prisotnost.txt z naslednjo vsebino za preizkus primerov, prikazanih v tem oddelku.

prisotnost.txt

1108885 je prisoten
1999979 je prisoten
1769994 ni
1105656 je odsoten
1455999 ni

Primer -3: Zamenjajte vso vsebino iz vrstice datoteke po ujemanju

Naslednji ukaz "sed" bo poiskal številko 1769994 v datoteki in vse s številko bo nadomestilo besedilo "1586844 je prisoten", če številka obstaja v kateri koli vrstici datoteke.

$ mačje zvestobe.txt
$ sed "s / 1769994.* / 1586844 je prisoten / "prisotnost.txt

Naslednji izhod se bo prikazal z ukazi. Tu je iskalna številka v tretji vrstici datoteke in zamenjava je bila opravljena.

Primer -4: Po ujemanju nadomestite vso vsebino iz več vrstic datoteke

Naslednji ukaz 'sed' prikazuje uporabo spremenljivke $ PARTITION_COLUMN za zamenjavo več vrstic iz datoteke. Ukaz bo na začetku vsake vrstice datoteke poiskal '110' in vse nadomestil z '110' z besedilom 'Neveljaven vnos', kjer bo našli ujemajoče se besedilo.

$ obisk mačke.txt
$ sed "s / ^ 110.* $ PARTITION_COLUMN.* / Neveljaven vnos / "prisotnost.txt

Po zagonu ukazov se prikaže naslednji izhod. '110' obstaja v dveh vrsticah datoteke in jih je nadomestilo nadomestno besedilo.

Primer 5: Zamenjajte vso vsebino iz vrstice datoteke, tako da po ujemanju uporabite 'c'

Naslednji 'sed'ukaz prikazuje uporabo'c'po tekmi zamenjati vse. Tukaj, 'c'označuje spremembo. Ukaz bo poiskal besedo 'prisoten'v datoteki in zamenjaj vse vrstice z besedilom,'Ta vrstica se nadomesti'če beseda obstaja v kateri koli vrstici datoteke.

$ obisk mačke.txt
$ sed '/ present / c Ta vrstica se nadomesti z' udeležba.txt

Po zagonu ukazov se prikaže naslednji izhod. Beseda 'prisoten' obstaja v prvih dveh vrsticah datoteke, ti dve vrstici pa sta nadomeščeni z nadomestnim besedilom.

Primer 6: Zamenjajte vso vsebino iz vrstice datoteke glede na začetni in končni vzorec

Včasih je treba besedilo nadomestiti glede na začetni in končni vzorec. Naslednji ukaz 'sed' prikazuje način določanja začetnega in končnega vzorca za zamenjavo vrstic iz datoteke. Ukaz bo poiskal vrstice v datoteki, ki se začnejo s številko 110 in končajo z besedo "odsoten", vse pa nadomesti z besedo "zamenjano", kjer se vzorci ujemajo.

$ obisk mačke.txt
$ sed -e '/ ^ 110.* odsotnost $ / zamenjana / g 'prisotnost.txt

Po zagonu ukazov se prikaže naslednji izhod. Tu se prva in četrta vrstica začneta s številko 110, beseda „odsoten“ pa obstaja samo v četrti vrstici. Tako je četrta vrstica datoteke nadomeščena z nadomestnim besedilom.

Zaključek:

Ukaz 'sed' je zelo zmogljivo orodje Linuxa za izvajanje različnih vrst nalog, povezanih z obdelavo besedila. Nadomestna naloga, ki temelji na ujemajočem se vzorcu, je obravnavana v tej vadnici z uporabo različnih vrst vzorcev v ukazu 'sed'. $ PARTITION_COLUMN, 'c' in '.* 'se v tej vadnici uporablja za nadomestitev vse vrstice datoteke, kjer obstaja ujemajoč se vzorec. Tu so prikazane uporabe nekaterih znakov vzorcev za definiranje, na primer '^' in '$'. Obstaja veliko drugih znakov, ki za namene iskanja določajo vzorec v regularnem izrazu. Upam, da bo ta vadnica bralcu pomagala spoznati osnove zamenjave vsega iz datoteke po tekmi.

Najboljše igre z ročnim sledenjem
Oculus Quest je pred kratkim predstavil odlično idejo ročnega sledenja brez krmilnikov. Z vedno večjim številom iger in dejavnosti, ki izvajajo podpor...
Kako prikazati prekrivanje zaslonskega menija v celozaslonskih aplikacijah in igrah za Linux
Igranje celozaslonskih iger ali uporaba aplikacij v celozaslonskem načinu brez motenj vam lahko odreže ustrezne sistemske informacije, ki so vidne na ...
Top 5 kartic za zajemanje iger
Vsi smo v YouTubu videli in oboževali pretakanje iger. PewDiePie, Jakesepticye in Markiplier so le nekateri izmed najboljših igralcev, ki so zaslužili...