Naučite se Linuxa

Zamenjava niza v Bashu

Zamenjava niza v Bashu

Bash je ukazni postopek, združljiv z lupino UNIX, katerega glavna naloga je manipulacija nizov, izvedenih v okolju lupine. Programerji so včasih pozvani, da delajo na različnih datotekah. Lahko dodajo, izbrišejo in zamenjajo dele ali celotno datoteko, da ustrezajo njihovemu delu. To zahteva znanje zamenjave niza v bash. Shranjevanje podatkov je lahko začasno ali trajno, odvisno od narave podatkov. Niz datoteke je bistvenega pomena pri zamenjavi vsebine datoteke.

Zamenjava niza v Bashu

sed je ključnega pomena in je priročen za pomoč pri zamenjavi nizov v datoteki z bash skripti. Urejevalnik nizov lahko na različne načine nadomestite vsebino datotek v bash. Nadomestni urejevalnik zvočnih nizov je awk, ki ga lahko vključite v postopek zamenjave vrednosti niza iz datoteke z uporabo basha. Ta članek bo s pomočjo primerov prikazal, kako je mogoče vsebino datoteke nadomestiti z bash. Upoštevajte, da je lahko znanje o vzorcih regularnih izrazov zelo koristno tudi pri zamenjavi niza v bash.

Manipulacija z nizom bash

Pri manjših ali enostavnih zamenjavah sed ni potreben. Bash lahko naredi manipulacijo.

Na primer:
Pri zamenjavi fosslinuxa.gif z .mp4, sed ni potreben.
Za izvedbo postopka z uporabo basha uporabite spodnje kodirano besedilo:

# / bin / bash ime_datoteke = "fosslinux.gif "new_extension =" mp4 "# Zamenjaj .gif z .mp4 ustvarjeno_ime_datoteke = $ ime_datoteke /.gif /.$ new_extension echo generated_file_name

Zamenjava niza z uporabo sed

sed lahko imenujemo urejevalnik tokov. Sed lahko nadomesti niz v datotekah. Oglejmo si primer datoteke, imenovane singleboardbytes.txt, ki vsebuje naslednje informacije:
Foss Linux je odlična stran za učenje za vsakega uporabnika Linuxa. Oglejte si članke, ki jih je objavil Foss Linux na njihovi spletni strani.

Zdaj iz naše datoteke moramo nadomestiti besedo »spletnem mestu"Z"Spletna stran"In datoteko preimenujte v fosslinux.txt.

Razumevanje sedanjske sintakse

sed -i 's / search_string / replace_string /' ime datoteke sed - je ukaz, uporabljen pri izvajanju zgornje skladnje '-jaz'- uporablja se pri spreminjanju vsebine izvirne datoteke z nadomestnim pripomočkom za niz, kadar koli v datoteki obstaja vrednost iskanja. "s'- to je nadomestni ukaz'search_string'- to predstavlja vrednost niza, ki ga je treba nadomestiti v izvirni datoteki'replace_string'- to predstavlja vrednost niza, ki se uporablja za nadomestitev iskane vrednosti. Niz se mora ujemati z nizom, ki ga najde ukaz 'search_string'. "Ime datoteke'- to je ime datoteke, pri katerem bo uporabljena zamenjava.

V terminalu izvedite naslednji ukaz:

sed 's / site / website / g' singleboardbytes.txt> fosslinux.txt

Zamenjava niza z uporabo sed

Opomba: zgornji ukaz lahko izvedete tudi tako, da ga vstavite kot bash skript.
Zamenjava z uporabo -jaz ukaz

Po zagonu ukaza je naslednji korak zamenjava z uporabo -jaz ukaz. -jaz je predstavitev za "na mestu", kar pomeni, da je datoteka samo zamenjana in da dodatnih datotek ni. Z zgornjim primerom zaženite naslednji ukaz:

sed -i 's / site / website / g' singleboardbytes.txt

Zamenjava z uporabo ukaza -i

Na spodnji sliki lahko vidite klicaj, ki pravi: Datoteka “/ home / tuts / singleboardbytes.txt spremenjen na disku.”To kaže, da so bile spremembe uspešno izvedene.

Spremembe na enojnih bajtih.txt

Spodnja slika je datoteka, ki vsebuje spremembe v prejšnjem koraku, tako v imenu datoteke (enojni bajti.txt v fosslinux.txt) in besedo spletnem mestu je bil spremenjen v Spletna stran.

Končna sprememba po zagonu ukaza sed

Uporaba spremenljivke kot iskalnih vrednosti in nadomestkov

Z malo interpolacije lahko spremenljivke uporabimo za zamenjavo nizov. V tem primeru mora prvi argument sed uporabiti dvojne narekovaje namesto enojnih narekovajev. Na primer, vaša koda bo podobna spodnji:

tuts () lokalno iskanje = 1 $ lokalna zamenjava = 2 $ # Upoštevajte dvojne narekovaje sed -i "s / $ search / $ replace / g" singleboardbytes.txt

Uporaba spremenljivke kot iskalnih vrednosti in nadomestkov

sed ima dva okusa, in sicer: FreeBSD in Linux sed. Distributerji Linuxa uporabljajo Linux sed, uporabniki OS X pa FreeBSD sed. Ti okusi so precej različni, zato ukazov ni mogoče prenesti iz enega sednega okusa v drugega.

Na primer, med nadomeščanjem vsebine datoteke s pomočjo FreeBSD je treba izdelati varnostno kopijo z uporabo .podaljšek bak. Lahko pa sprožite varnostno kopijo z uporabo praznih parov narekovajev takoj za zapisom -i, kot je prikazano v sintaksi bash spodaj:

tuts () lokalno iskanje = 1 $ lokalna zamenjava = 2 $ sed -i "" "s / $ search / $ replace / g" enojni bajti.txt

Če varnostne kopije med uporabo FreeBSD ne naredite, kot je prikazano v zgornji sintaksni kodi, boste padli v napako, kot je prikazana spodaj:

sed: 1: "/ Users / user / path / tuts…": dodatni znaki na koncu ukaza h

Kako z ukazom sed zamenjati datoteko in ujemati številski vzorec

Če skript uspešno zaženete, bo izvedeno iskanje vse številčne vsebine v datoteki. Nato bo vsebina nato nadomeščena z dodajanjem $ pred številkami.

#!/ bin / bash # Preverite vrednost argumenta ukazne vrstice ali ne, če je [$ 1 != ""]; then # Poiščite ves niz, ki vsebuje števke, in dodajte $ sed -i 's / \ b [0-9] \ 5 \ \ b / $ & / g' $ 1 fi

Zamenjava niza z ukazom awk

V tem primeru bomo namesto ukaza sed uporabili ukaz awk za zamenjavo vsebine datoteke. Razlika med temi ukazi je, da ukaz sed neposredno posodobi izvirno datoteko, kar pa ne velja za ukaz awk.

#!/ bin / bash # Preverite vrednost argumenta ukazne vrstice ali ne, če [$ 1 != ""]; then # Išči po vsem nizu glede na datum awk 'sub ("02.06.2020", "12.6.2020") 1' $ 1> temp.txt && mv temp.txt $ 1 fi

Zaključek

Zgornji primeri so ključnega pomena za vaš napredek pri učenju zamenjave niza v Bashu. Zato boste morali za dobro vedenje redno vaditi. Iskanje in zamenjava niza v datoteki se morda zdi zapleteno, vendar boste ob pravilnem upoštevanju naših smernic veliko bolj obvladljivi.

Pomembno je omeniti, da se zagon ukazov včasih zdi bolj obvladljiv, vendar bodite previdni, da ne naredite opustošenja od sed. Ko vnesete napačne ukaze, boste poškodovali računalnik in povzročili več težav, kot je izguba podatkov. Zato, da bi bili varni, vedno kopirajte in prilepite kodo, kakršna je, na vaš terminal. Tako boste preprečili črkovalne napake, ki bi lahko poškodovale vašo napravo. Upamo, da vam je ta članek pomagal izvedeti, kako z uporabo tega članka zamenjati niz v bash.

HD Remastered Games za Linux, ki prej še niso izdale Linuxa
Mnogi razvijalci iger in založniki pripravijo HD remaster starih iger, da podaljšajo življenjsko dobo franšize, zato oboževalci zahtevajo združljivost...
Kako uporabljati AutoKey za avtomatizacijo iger Linux
AutoKey je namizni pripomoček za avtomatizacijo za Linux in X11, programiran v Python 3, GTK in Qt. Z njegovo funkcijo skriptiranja in MACRO lahko avt...
Kako prikazati števec FPS v igrah Linux
Linux gaming je dobil velik zagon, ko je Valve leta 2012 napovedal podporo Linuxu za odjemalca Steam in njihove igre. Od takrat se je veliko AAA in in...