Õpi Linuxit

Stringi asendamine Bashis

Stringi asendamine Bashis

Bash on UNIX-i kestaga ühilduv käsuprotsess, mille põhiülesanne on shellikeskkonnas läbiviidavate stringidega manipuleerimine. Programmeerijaid kutsutakse kohati töötama erinevate failidega. Nad saavad lisada, kustutada ja asendada osi või kogu faili vastavalt oma tööle. See nõuab teadmisi stringi asendamise kohta bashis. Andmete salvestamine võib olla ajutine või alaline, sõltuvalt andmete laadist. Failistring on faili sisu asendamisel hädavajalik.

Stringi asendamine Bashis

sed on ülitähtis ja on abiks faili stringide asendamisel bashi skriptidega. Stringiredaktorit saab bashi failisisu asendamiseks kasutada mitmel viisil. Alternatiivne, kuid heli stringiredaktor on awk, mida saab mängu panna, kui asendada stringi väärtus failist bashi abil. See artikkel näitab näidete abil, kuidas faili sisu saab bashis asendada. Pange tähele, et regexi mustrites sisalduvatel teadmistel võib ka bashi stringi asendamisel olla suur väärtus.

Bashi stringide manipuleerimine

Väiksemate või lihtsamate asenduste tegemisel pole sed vaja. Bash saab manipuleerida.

Näiteks:
Fosslinuxi asendamisel.gif koos .mp4, sed pole vajalik.
Protsessi käivitamiseks bashi abil kasutage allpool kodeeritud teksti:

# / bin / bash faili nimi = "fosslinux.gif "new_extension =" mp4 "# Asenda .gif koos .mp4 genereeritud_faili_nimi = $ faili_nimi /.gif /.$ new_extension kaja genereeritud_faili_nimi

Stringi asendamine sed

sed võib nimetada voo redaktoriks. Sed võib failides stringi asendada. Vaatame ühe tahvli nimega faili näidet.txt, millel on järgmine teave:
Foss Linux on suurepärane õppesait kõigile Linuxi kasutajatele. Vaadake oma saidil Foss Linuxi avaldatud artikleid.

Nüüd peame meie failist asendama sõna “sait"Sõnaga"veebisaidil”Ja nimetage fail ümber fosslinux.txt.

Sed süntaksi mõistmine

sed -i 's / otsingu_string / asenda_string /' failinimi sed - on käsk, mida kasutatakse ülaltoodud süntaksis "-i'- kasutatakse originaalfaili sisu muutmisel asendusstringi abiga alati, kui failis on otsinguväärtus. "s'- see on asenduskäsk'otsingu_string'- see tähistab stringi väärtust, mida tuleb originaalfailis asendadastring_string'- see tähistab stringi väärtust, mida kasutatakse otsitud väärtuse asendamiseks. String peaks vastama käsule 'search_string' leitud stringile. "faili nimi'- see on failinimi, millega asendust rakendatakse.

Käivitage oma terminalis järgmine käsk:

sed '/ sait / veebisait / g' üksikbait.txt> fosslinux.txt

Stringi asendamine sed

Märkus. Võite ka ülaltoodud käsu täita, pannes selle bashi skriptiks.
Asendamine -i käsk

Pärast käsu käivitamist tuleb järgmine samm asendada -i käsk. -i on tähis “in place”, mis tähendab, et fail asendatakse ainult ja lisafaile ei looda. Kasutades ülaltoodud näidet, käivitage järgmine käsk:

sed -i 's / sait / veebisait / g' üksikbait.txt

Asendamine käsu -i abil

Allolevalt jooniselt näete hüüumärki, mis ütleb: Fail „/ home / tuts / singleboardbytes.txt on kettal muudetud.”See näitab, et muudatused on edukalt tehtud.

Ühe pardalbaiti tehtud muudatused.txt

Alloleval joonisel on fail, mis sisaldab eelmises etapis tehtud muudatusi nii faili nimes (üheplaadid.txt to fosslinux.txt) ja sõna sait on muudetud veebisaidil.

Lõplik muudatus pärast käsu sed käivitamist

Muutuja kasutamine otsinguväärtuste ja asendustena

Väikese interpoleerimisega saab stringide asendamiseks kasutada muutujaid. Esimeses sed argumentis tuleb sel juhul kasutada jutumärkide asemel topelt jutumärke. Näiteks on teie kood sarnane allolevaga:

tuts () kohalik otsing = $ 1 kohalik asendus = $ 2 # Pange tähele topelt jutumärke sed -i "s / $ search / $ substit / g" ühe tahvli baiti.txt

Muutuja kasutamine otsinguväärtuste ja asendustena

sedil on kaks maitset, nimelt: FreeBSD ja Linux sed. Linuxi distrod kasutavad Linux sed-i, OS X-i kasutajad aga FreeBSD sed-i. Need maitsed on üsna erinevad ja seetõttu ei saa käske ühelt sed maitselt teisele üle kanda.

Näiteks faili sisu asendamisel FreeBSD-ga tuleks varukoopia teha, kasutades .bak pikendus. Või võite varundamise algatada tühjade jutumärkide paaride kasutamisega kohe pärast -i tähistust, nagu on näidatud allpool toodud bashi süntaksis:

tuts () kohalik otsing = $ 1 kohalik asendus = $ 2 sed -i "" "s / $ search / $ substit / g" üksikbaiti.txt

Kui FreeBSD kasutamise ajal varundamist ei tehta, nagu on näidatud ülaltoodud süntaksikoodis, satute sellisesse viga nagu allpool näidatud:

sed: 1: "/ Users / user / path / tuts ...": lisamärgid käsu h lõpus

Kuidas asendada fail ja sobitada numbrimuster käsu sed abil

Skripti edukalt käivitamisel otsitakse kogu failis sisalduvat arvulist sisu. Seejärel asendatakse sisu, lisades enne numbreid $.

#!/ bin / bash # Kontrollige, kas käsurea argumenti väärtus on olemas või mitte, kui [$ 1 != ""]; siis # otsi kõikidest numbreid sisaldavatest stringidest ja lisa $ sed -i 's / \ b [0-9] \ 5 \ \ b / $ & / g' $ 1 fi

Stringi asendamine käsu awk abil

Sel juhul kasutame faili sisu asendamiseks käsu sed asemel käsku awk. Nende käskude erinevus seisneb selles, et sed-käsk värskendab otseselt algset faili, mis pole käsk awk.

#!/ bin / bash # Kontrollige, kas käsurea argumenti väärtus on olemas või mitte, kui [$ 1 != ""]; siis # otsi kõigist stringidest kuupäeva awk 'sub ("02.06.2020", "12.06.2020") 1' $ 1> temp järgi.txt && mv temp.txt $ 1 fi

Järeldus

Ülaltoodud näited on teie Bashi stringi asendamise õppimisel ülitähtsad. Seetõttu peate selles korralikult harjutama regulaarselt. Stringi otsimine ja asendamine failis võib tunduda keeruline, kuid meie juhiste õigesti järgides leiate, et see on palju paremini hallatav.

Pange tähele, et käskude käivitamine võib kohati tunduda paremini hallatav, kuid peaksite olema ettevaatlik, et mitte. Kui sisestate valesid käske, rikute arvuti, põhjustades teile rohkem probleeme, näiteks andmete kaotamine. Seega, turvalisuse huvides kopeerige ja kleepige kood alati oma terminali. See hoiab ära õigekirjavead, mis võivad teie masinat rikkuda. Loodame, et see artikkel aitas teil selle artikli abil õppida stringi asendamist bashis.

Kuidas kasutada Xdotooli hiireklõpsude ja klahvivajutuste stimuleerimiseks Linuxis
Xdotool on tasuta ja avatud lähtekoodiga käsurea tööriist hiireklõpsude ja klahvivajutuste simuleerimiseks. See artikkel hõlmab lühikest juhendit xdot...
Viis parimat ergonoomilist arvutihiiretoodet Linuxile
Kas pikaajaline arvuti kasutamine põhjustab valu randmes või sõrmedes?? Kas teil on liigeste jäikus ja peate pidevalt käsi suruma? Kas tunnete põletav...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...