Si të manipuloni vargjet në Bash në Linux
Nëse ka një gjë me të cilën Linux është i pajisur mirë, ato janë shërbimet për manipulimin e vargjeve. Por ekziston një grup i tërë funksionaliteti i ndërtuar pikërisht në guaskën Bash. Ja si përdoret.
Manipulimi i vargut
Ekosistemi Linux është i mbushur me mjete fantastike për të punuar me tekst dhe vargje. Këto përfshijnë awk, grep, sed dhe prerje. Për çdo grindje teksti me peshë të rëndë, këto duhet të jenë zgjedhjet tuaja kryesore.
Megjithatë, ndonjëherë, është e përshtatshme të përdoren aftësitë e integruara të guaskës, veçanërisht kur jeni duke shkruar një skenar të shkurtër dhe të thjeshtë. Nëse skripti juaj do të ndahet me njerëz të tjerë dhe do të ekzekutohet në kompjuterët e tyre, përdorimi i funksionalitetit standard Bash do të thotë që nuk duhet të pyesni veten për praninë ose versionin e ndonjë prej shërbimeve të tjera.
Nëse keni nevojë për fuqinë e shërbimeve të dedikuara, atëherë përdorni ato me çdo kusht. Për këtë janë ata atje. Por shpesh skenari juaj dhe Bash mund ta kryejnë punën vetë.
Për shkak se ato janë të integruara të Bash, mund t'i përdorni në skriptet ose në vijën e komandës. Përdorimi i tyre në një dritare terminali është një mënyrë e shpejtë dhe e përshtatshme për të prototipuar komandat tuaja dhe për të përsosur sintaksën. Ai shmang ciklin e modifikimit, ruajtjes, ekzekutimit dhe korrigjimit.
Krijimi dhe puna me variablat e vargut
Gjithçka që na duhet për të deklaruar një ndryshore dhe për t'i caktuar një varg është të emërtojmë variablin, të përdorim shenjën e barazimit =
dhe të japim vargun. Nëse ka hapësira në vargun tuaj, mbështilleni atë me thonjëza të vetme ose të dyfishta. Sigurohuni që të mos ketë hapësirë të bardhë në asnjërën anë të shenjës së barazimit.
my_string="Hello, How-To Geek World."
echo $my_string
Pasi të keni krijuar një variabël, ai emër i ndryshores shtohet në listën e fjalëve të plotësimit të skedës së guaskës. Në këtë shembull, duke shtypur my_ dhe duke shtypur tastin Tab futet emri i plotë në vijën e komandës.
Variablat vetëm për lexim
Ekziston një komandë deklaro
që mund ta përdorim për deklarimin e variablave. Në raste të thjeshta, nuk ju nevojitet vërtet, por përdorimi i tij ju lejon të përdorni disa nga opsionet e komandës. Ndoshta ai që do të përdorni më shumë është opsioni -r
(vetëm për lexim). Kjo krijon një variabël vetëm për lexim që nuk mund të ndryshohet.
declare -r read_only_var="This is an immutable string!"
Nëse përpiqemi t'i caktojmë një vlerë të re, ajo do të dështojë.
read_only_var="A new string..."
Shkrimi në dritaren e terminalit
Mund të shkruajmë disa vargje në dritaren e terminalit duke përdorur echo ose printf në mënyrë që të duken sikur të jenë një varg. Dhe ne nuk jemi të kufizuar në variablat tona të vargjeve, ne mund të inkorporojmë variablat e mjedisit në komandat tona.
user_account="Your user account is:"
echo $user_account $USER
Lidhja e vargjeve
Operatori plus-equals, +=
, ju lejon të shtoni dy vargje së bashku. Quhet bashkim.
user_account="Your user account is:"
user_account+=$USER
echo $user_account
Vini re se nuk merrni një hapësirë të shtuar automatikisht midis vargjeve të lidhura. Nëse keni nevojë të keni një hapësirë, duhet ta vendosni në mënyrë eksplicite një në fund të vargut të parë ose në fillim të të dytës.
user_account="Your user account is: "
user_account+=$USER
echo $user_account
Leximi i hyrjes së përdoruesit
Përveç krijimit të variablave të vargut që kanë përmbajtjen e tyre të përcaktuar si pjesë e deklaratës së tyre, ne mund të lexojmë hyrjen e përdoruesit në një variabël vargu.
Komanda lexo
lexon hyrjen e përdoruesit. Opsioni -p
(prompt) shkruan një kërkesë në dritaren e terminalit. Hyrja e përdoruesit ruhet në variablin e vargut. Në këtë shembull, ndryshorja quhet skedar_përdorues
.
read -p "Open which file? " user_file
echo $user_file
Nëse nuk jepni një variabël vargu për të kapur hyrjen, ai do të vazhdojë të funksionojë. Hyrja e përdoruesit do të ruhet në një variabël të quajtur REPLY
.
read -p "Open which file? "
echo $REPLY
Zakonisht është më e përshtatshme të jepni variablin tuaj dhe t'i jepni një emër kuptimplotë.
Manipulimi i vargjeve
Tani që kemi vargjet tona, qofshin të përcaktuara në kohën e krijimit, të lexuara nga hyrja e përdoruesit ose të krijuara nga bashkimi i vargjeve, ne mund të fillojmë të bëjmë gjëra me to.
Gjetja e gjatësisë së vargut
Nëse është e rëndësishme ose e dobishme të dimë gjatësinë e një vargu, mund ta marrim atë duke i paraprirë emrit të ndryshores me një simbol hash “#
”.
my_string="There are 39 characters in this string."
echo ${#my_string}
Nxjerrja e nënvargjeve sipas zhvendosjeve të karaktereve
Ne mund të nxjerrim një nënvarg nga një variabël vargu duke siguruar një pikë fillimi brenda vargut dhe një gjatësi opsionale. Nëse nuk japim një gjatësi, nënvargu do të përmbajë gjithçka nga pika e fillimit deri në karakterin e fundit.
Pika e fillimit dhe gjatësia ndjekin emrin e ndryshores, me dy pika :
midis tyre. Vini re se karakteret në një variabël vargu numërohen duke filluar nga zero.
long_string="Frankenstein or the Modern Prometheus"
substring=${long_string:0:12}
echo $substring
echo ${long_string:27}
Një variant tjetër ju lejon të hidhni një numër shkronjash nga fundi i vargut. Në mënyrë efektive kjo ju lejon të vendosni një pikë fillimi dhe të përdorni një numër negativ si gjatësi. Nënvargu do të përmbajë karakteret nga pika e fillimit deri në fund të vargut, minus numrin e karaktereve që keni specifikuar në numrin negativ.
my_string="alphabetical"
echo ${my_string:5:-4}
Në të gjitha rastet ndryshorja origjinale e vargut është e paprekur. Nënvargu i ekstraktuar në fakt nuk hiqet nga përmbajtja e ndryshores.
Nxjerrja e nënvargjeve me ndarës
Disavantazhi i përdorimit të zhvendosjeve të karaktereve është që ju duhet të dini paraprakisht se ku ndodhen nënvargjet që dëshironi të nxirrni brenda vargut.
Nëse vargu juaj është i kufizuar nga një karakter që përsëritet, ju mund të nxirrni nënvargje pa e ditur se ku janë në varg dhe as sa të gjatë janë.
Për të kërkuar nga pjesa e përparme e vargut, ndiq emrin e ndryshores me shenja të dyfishta për qind, %%
, karakterin kufizues dhe një yll, *
. Fjalët në këtë varg janë të kufizuara me hapësira.
long_string="first second third fourth fifth"
echo ${long_string%%' '*}
Kjo kthen nënvargun e parë nga pjesa e përparme e vargut që nuk përmban karakterin kufizues. Ky quhet opsioni i nënvargut të shkurtër.
Opsioni i nënvargut të gjatë e kthen pjesën e përparme të vargut deri në nënvargun e fundit të kufizuar. Me fjalë të tjera, ai heq nënvargun e fundit të kufizuar. Sintaktikisht, ndryshimi i vetëm është se përdor një shenjë të vetme përqindjeje %
në komandë.
long_string="first second third fourth fifth"
echo ${long_string%' '*}
Siç e prisnit, mund të kërkoni në të njëjtën mënyrë nga fundi i vargut. Në vend të një shenje përqindjeje, përdorni një shenjë hash #
dhe lëvizni kufizuesin që të vijë pas yllit *
në komandë .
long_string="this.long.string.of.words.is.delimited.by.periods"
echo ${long_string##*.}
Ky është opsioni i nënvargut të shkurtër, ai shkurton nënvargun e parë që gjen nga pjesa e pasme e vargut që nuk përmban kufirin.
long_string="this.long.string.of.words.is.delimited.by.periods"
echo ${long_string#*.}
Opsioni i nënvargut të gjatë kthen pjesën e pasme të vargut deri në kufirin e parë nga pjesa e përparme e vargut. Me fjalë të tjera, ai heq nënvargun e parë të kufizuar.
Zëvendësimi i nënvargut
Ndërrimi i nënvargjeve me nënvargje të tjera është i lehtë. Formati është emri i vargut, nënvargu që do të zëvendësohet dhe nënvargu që do të futet, i ndarë me karaktere të prera përpara “/
”.
string="blue pig giggles"
echo ${string/pig/goat}
Për të kufizuar kërkimin në fund të vargut, paraprini vargun e kërkimit me shenjën e përqindjes %
.
string="blue pig giggles"
echo ${string/%giggles/chuckles}
Për të kufizuar kërkimin në fillimin e vargut, paraprini vargun e kërkimit me një karakter hash #
.
string="blue pig giggles"
echo ${string/#blue/yellow}
Një varg është një gjë fleksibël
Nëse një varg nuk është ashtu siç dëshironi ose nuk ju nevojitet, këto mjete do t'ju ndihmojnë ta riformatoni atë në mënyrë që t'i përshtatet nevojave tuaja. Për transformime të ndërlikuara, përdorni shërbimet e dedikuara, por për korrigjimet e vogla përdorni pjesët e integruara të guaskës dhe shmangni shpenzimet e përgjithshme të ngarkimit dhe funksionimit të një vegle të jashtme.