Kimi Ngokwami isihloko esandulele Ngikutshele ezingeni eliyisisekelo ukuthi izinhlamvu ezikhethekile ezisetshenziswa kakhulu zezinkulumo ezijwayelekile zisebenza kanjani. Ngalezi zinkulumo ezijwayelekile kungenzeka ukusesha okuyinkimbinkimbi kumafayili wombhalo noma ekukhishweni kweminye imiyalo. Kulesi sihloko ngizochaza ukuthi uwusebenzisa kanjani umyalo we-sed ukuthola nokufaka esikhundleni umbhalo ngendlela enamandla kakhulu kunokumane uguqulele umbhalo owodwa uwenze omunye.
Okuncane kakhulu ngomyalo we-grep
Ngaphambi kokuthi ngiqale ukukhuluma nge-sed, ngithanda ukuphawula kancane ngomyalo we-grep wokuqedela okuchazwe endatshaneni eyedlule kancane. Konke engizokusho kuzohambisana nalokhu futhi. Kamuva sizobona ubudlelwane phakathi kwalokhu nokuseshwa.
Ihlanganisa izinkulumo ezivamile
Izinhlamvu eziningi ezikhethekile engikhulume ngazo esihlokweni esedlule zingahlanganiswa, hhayi kuphela nezinye izinhlamvu, kepha nezinkulumo ezijwayelekile. Indlela yokwenza lokhu ukusebenzisa ama-parentheses ukwakha i-subexpression. Ake sibheke isibonelo salokhu. Ake siqale ngokulanda umbhalo esingawusebenzisa ekuhloleni. Kuluhlu lwemishwana. Ngalokho sizosebenzisa umyalo olandelayo:
curl http://artigoo.com/lista-de-frases-comparativas-comicas 2>/dev/null | sed -n 's/.*\(.*\.\)<\/p>/\1/gp' > frases
Lokhu kuzokushiya enkombeni lapho wethula khona ifayili elibizwa «imishwana». Ungayivula ukuze ubuke bese uhleka kancane. 🙂
Manje ake sithi sifuna ukuthola imishwana enamagama ayi-6 ncamashi. Ubunzima bukwakha isisho esijwayelekile esifana negama ngalinye. Igama ukulandelana kwezinhlamvu, kungaba ngofeleba noma ngonobumba omncane, okungaba into efana naleyo '[a-zA-Z]+'
, kepha futhi kufanele ucacise ukuthi lezi zinhlamvu kufanele zehlukaniswe ezinye izinhlamvu ngaphandle kwezinhlamvu, okungukuthi, kungaba yinto efana '[a-zA-Z]+[^a-zA-Z]+'
. Khumbula: i- "^" njengomlingiswa wokuqala ongaphakathi kubakaki ekhombisa ukuthi sifuna ukufanisa nezinhlamvu ezingekho emabangeni kanti u - "+" ukhombisa uhlamvu olungu-1 noma ngaphezulu.
Sesivele sinesichasiso esivamile esingafanisa negama. Ukuyibhangqa no-6, kuzofanele iphindwe izikhathi eziyisithupha. Ngalokho sisebenzise okhiye, kepha akusizi ukubeka '[a-zA-Z]+[^a-zA-Z]+{6}'
, ngoba abayi-6 bazophinda ingxenye yokugcina yenkulumo ejwayelekile futhi esikufunayo ukukuphinda konke, ngakho-ke okumele ukwenze yilokhu: '([a-zA-Z]+[^a-zA-Z]+){6}'
. Ngabakaki sakha i-subexpression futhi ngama-brace siyaphinda kaningi. Manje udinga nje ukufaka i- "^" ngaphambili ne "$" ngemuva ukufanisa wonke umugqa. Umyalo ulandelayo:
grep -E '^([a-zA-Z]+[^a-zA-Z]+){6}$' frases
Futhi umphumela ube yilokho ebesikufuna:
Ihlatshelelwa kakhulu kuneMacarena. Uqede kakhulu kunoLuis Aguilé. Unamasiko amancane kunetshe. Wazi izilimi eziningi kuneCañita Brava. Unemibimbi eminingi kunoTutan Khamón. Wazi okuncane kunoRambo ngokunakekela izingane.
Qaphela ukuthi sibeka -E ipharamitha ngoba sifuna ukusebenzisa izinkulumo ezijwayelekile ezinwetshiwe ukwenza "+" ukusebenza. Uma besisebenzisa okuyisisekelo, kuzofanele sibalekele amabakaki nabakaki.
Izinkomba zangemuva noma okubhekiswe emuva
Uma une-spell checker efakiwe, uzoba nohlu lwamagama ku- /usr/share/dict/words
. Uma kungenjalo, ungayifaka ku-arch nge:
sudo pacman -S words
Noma ku-debian nge:
sudo aptitude install dictionaries-common
Uma ufuna ungabheka ifayili ukubona ukuthi linamazwi anjani. Empeleni isixhumanisi sefayela leZwi lolimi okukulo i-distro yakho. Ungaba namafayela wamagama amaningi afakiwe ngasikhathi sinye.
Sizosebenzisa lelo fayela. Kuvela ukuthi sinelukuluku lokwazi zonke izinhlamvu eziyisikhombisa palindromes laphaya. Kulabo abangazi: I-palindrome yigama le-capicúa, okungukuthi, lingafundwa kusuka kwesobunxele kuye kwesokudla nakwesokudla kuye kwesobunxele. Ake sizame umyalo olandelayo:
grep '^\(.\)\(.\)\(.\).\3\2\1$' /usr/share/dict/words
Kubukeka kungajwayelekile, akunjalo? Uma sizama, umphumela uzoncika olimini lwe-distro yakho namagama asohlwini lwakho, kepha kimi, ngolimi lweSpanishi, umphumela yilokhu:
aniline aniline ukugingqa
Ake sibone ukuthi le nkulumo ejwayelekile isebenza kanjani.
Ngaphandle kwe- "^" ne- "$", esivele siyazi ukuthi yenzelwe ini, into yokuqala esiyibonayo ngakwesobunxele ngamaqembu amathathu amachashazi afakwe kubakaki. Ungadideki ngemigoqo ephambi kwebakaki ngalinye. Bazokweqa obakaki ngoba sisebenzisa izinkulumo ezijwayelekile eziyisisekelo, kepha azinayo enye incazelo. Okubalulekile ukuthi sicela noma yiziphi izinhlamvu ezintathu ezinamachashazi, kepha ngalinye lalawo machashazi lifakwe kubakaki. Lokhu ukusindisa izinhlamvu ezihambelana nalawo maphuzu ukuze ziphinde zikhonjwe futhi kusuka kusisho esijwayelekile. Lokhu okunye ukusetshenziswa kwama-parentheses okuzosiza kamuva ukwenza okunye okuzongena esikhundleni.
Yilapho izinombolo ezintathu ezingezansi ziza ne-slash phambi kwazo. Kulokhu, ibha ibalulekile. Isetshenziselwa ukukhombisa ukuthi inombolo engezansi iyinkomba yokubuyela emuva futhi ibhekisa komunye wabakaki bangaphambili. Isibonelo: \ 1 kubhekiswa kubakaki bokuqala, \ 2 kuye kwesibili, njalonjalo.
Lokho kusho ukuthi, ngenkulumo ejwayelekile esiyibekile, lokho esikufunayo yiwo wonke amagama aqala nganoma yiziphi izinhlamvu ezine bese enenhlamvu efana neyesithathu, enye efana neyesibili nenye efana no kuqala. Umphumela waba ama-palindromes ezinhlamvu eziyisikhombisa asohlwini lwamagama. Njengoba besifuna.
Ukube besisebenzisa izinkulumo ezijwayelekile ezinwetshiwe, bekungeke kudingeke ukuthi sibalekele ama-parentheses, kepha ngokubhekiselwa emuva kwezichasiso ezivamile akusebenzi kuzo zonke izinhlelo ngoba azimisiwe. Kodwa-ke, nge-grep bayasebenza, ukuze kube enye indlela yokwenza okufanayo. Ungazama uma ufuna.
Izinkulumo ezishintshayo: umyalo we-sed
Ngaphezu kokusesha, enye yezindlela ezinhle kakhulu zokusebenzisa izinkulumo ezijwayelekile ukufaka esikhundleni semibhalo eyinkimbinkimbi. Ukwenza lokhu, enye indlela yokukwenza ngomyalo we-sed. Amandla we-sed umyalo udlula kude ukufaka esikhundleni sombhalo, kepha nakhu ngizokusebenzisela lokho. I-syntax engizoyisebenzisa nalo myalo yile elandelayo:
sed [-r] 's/REGEX/REPL/g' FICHERO
Noma futhi:
COMANDO | sed [-r] 's/REGEX/REPL/g'
Lapho i-REGEX kuzoba yisisho esijwayelekile sokusesha bese kuthi i-REPL enye esikhundleni sayo. Khumbula ukuthi lo myalo awuthathi ndawo kunoma yini efayeleni esiyikhombayo, kepha lokho ekwenzayo ukusikhombisa umphumela wokufakwa esikhundleni ku-terminal, ngakho-ke ungesabi imiyalo engizoyibeka ngokulandelayo. Akekho kubo ozoguqula noma yimaphi amafayela kusistimu yakho.
Ake siqale ngesibonelo esilula. Sonke sinamafayela wokumisa ahlukahlukene kumkhombandlela we / njll ovame ukuba namazwana aqala ngo- "#". Ake sithi sifuna ukubona elinye lalawa mafayela ngaphandle kwamazwana. Isibonelo, ngizokwenza ne-fstab. Ungazama ngaleyo oyifunayo.
sed 's/#.*//g' /etc/fstab
Angizukubeka umphumela womyalo lapha ngoba kuya ngalokho onakho ku-fstab yakho, kepha uma uqhathanisa umphumela womyalo nokuqukethwe yifayela uzobona ukuthi konke ukuphawula sekunyamalele.
Kulo myalo isisho sokusesha sithi «#.*
", Lokho" # "kulandelwa yinombolo yezinhlamvu, okungukuthi, ukuphawula. Futhi isisho sokufaka esikhundleni, uma ubheka imigoqo emibili ilandelana, uzobona ukuthi awekho, ngakho-ke okwenzayo ukufaka imibono esikhundleni salutho, okungukuthi, ukuwasusa. Kulula okungenakwenzeka.
Manje sizokwenza okuphambene. Ake sithi esikufunayo ukuphawula yonke imigqa yefayela. Ake sizame kanjena:
sed 's/^/# /g' /etc/fstab
Uzobona ukuthi, ekukhishweni komyalo, yonke imigqa iqala ngophawu lwe-hash nesikhala esingenalutho. Esikwenzile ukufaka esikhundleni sokuqala komugqa nge «#
«. Lesi futhi yisibonelo esilula lapho umbhalo okufanele ushintshwe uhlala ufana, kepha manje sizokuxaka ngokwengeziwe.
Umusa wokushintshwa ukuthi enkulumweni engena esikhundleni ungasebenzisa izinkomba ezingemuva ezifana nalezi ebengikutshele zona ngaphambili. Masibuyele kufayela lesisho esililandile ekuqaleni kwendatshana. Sizofaka kubakaki bonke amagama amakhulu akhona, kepha sizokwenza ngomyalo:
sed 's/\([A-Z]\)/(\1)/g' frases
Esinakho lapha ukubuyela emuva kusichasiselo esishintshayo esibhekisa kubakaki kusisho sokusesha. Ama-parentheses enkulumweni ezongena esikhundleni angama-parentheses ajwayelekile. Enkulumweni yokushintshwa ayinayo incazelo ekhethekile, zibekwa njengoba zinjalo. Umphumela uba ukuthi wonke amagama amakhulu afakwa esikhundleni saleyo yona leyo ncwadi, noma ngabe yini, enabakaki abayizungezile.
Kunomunye umlingiswa ongasetshenziswa futhi esikhundleni senkulumo esetshenzisiwe, ngu "&" futhi ushintshaniswa yilo lonke umbhalo ofaniswe nenkulumo yosesho. Isibonelo salokhu kungaba ukubeka yonke imishwana efayeleni kuzilinganiso. Lokhu kungafinyelelwa ngalo myalo:
sed 's/.*/"&"/g' frases
Ukusebenza kwalo myalo kufana kakhulu nowangaphambilini, kuphela manje lokho esikubekayo kungumugqa wonke onomugqa ofanayo nezingcaphuno ezizungezile. Njengoba sisebenzisa u - "&", akudingekile ukubeka amabakaki.
Eminye imiyalo ewusizo enezinkulumo ezijwayelekile
Nayi imiyalo embalwa engiyithola ilusizo noma inelukuluku futhi esebenzisa izinkulumo ezijwayelekile. Ngale miyalo ukusetshenziswa kwezincazelo ezijwayelekile kungcono kakhulu kunezibonelo engikunikeze zona kuze kube manje, kepha bekubonakala kubalulekile kimi ukuthi ngichaze okuthile ngokuthi izinkulumo ezijwayelekile zisebenza kanjani ukuziqonda.
- Khombisa izingxenye zekhasi lomuntu:
man bash | grep '^[A-Z][A-Z ]*$'
Vele, ungashintsha umyalo we-bash uye kunoma yini oyifunayo. Futhi-ke ukusuka kumuntu, ungaya ngqo esigabeni osithandayo osisebenzisayo, kunjalo, isisho esivamile. Cindezela «/» ukuqala ukusesha nokubhala «^ALIASES$
»Ukuya kusigaba se-ALIASES, isibonelo. Ngicabanga ukuthi lokhu ukusetshenziswa kokuqala engiqale ukukusebenzisa kwezinkulumo ezijwayelekile eminyakeni embalwa edlule. Ukuhamba kwamanye amakhasi encwadi cishe akunakwenzeka ngaphandle kweqhinga elinjengaleli.
- Khombisa amagama abo bonke abasebenzisi bomshini kufaka phakathi abalulekile:
sed 's/\([^:]*\).*/\1/' /etc/passwd
- Khombisa amagama abasebenzisi, kepha kuphela lawo ane-Shell:
grep -vE '(/false|/nologin)$' /etc/passwd | sed 's/\([^:]*\).*/\1/g'
Kungenziwa ngenkulumo eyodwa ejwayelekile, kepha indlela yokukwenza idlulela ngalokhu engikutshele khona kulezi zihloko, ngakho-ke ngikwenze ngokuhlanganisa imiyalo emibili.
- Faka ukhefana ngaphambi kwamadijithi amathathu okugcina azo zonke izinombolo kufayela lezinombolo:
sed 's/\(^\|[^0-9.]\)\([0-9]\+\)\([0-9]\{3\}\)/\1\2,\3/g' numbers
Isebenza kuphela ngezinombolo ezifika kumadijithi ayi-6, kepha ingabizwa ngaphezu kwesisodwa ukubeka izihlukanisi kwamanye amaqembu ezinamadijithi amathathu.
- Khipha wonke amakheli e-imeyili efayeleni:
grep -E '\<[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\>' FICHERO
- Hlukanisa usuku, inyanga nonyaka wazo zonke izinsuku ezivela efayeleni:
sed -r 's/([0-9]{2})[/-]([0-9]{2})[/-]([0-9]{4})/Día: \1, Mes: \2, Año: \3/g' FICHERO
- Thola i-IP yangakini:
/sbin/ifconfig | grep 'inet .*broadcast' | sed -r 's/[^0-9]*(([0-9]+\.){3}[0-9]+).*/\1/g'
Lokhu kungenziwa futhi ngomyalo owodwa we-sed, kepha kungcono ngikuhlukanise kube yi-grep ne-sed ukuze kube lula.
Amanye amakheli awusizo
Nawa amanye amakheli angahle abe wusizo ahlobene nezisho ezijwayelekile:
- Umtapo wolwazi ojwayelekile: Lo ngumtapo wolwazi ojwayelekile lapho ungasesha khona izinkulumo ezijwayelekile ezihlobene nesihloko osithandayo. Ukucinga amakheli e-web, i-ID noma yini.
- I-RegExr: Isihloli sokukhuluma esijwayelekile online. Ikuvumela ukuthi ufake umbhalo futhi usebenzise inkulumo ejwayelekile kuwo noma useshe noma ungene esikhundleni. Inikeza imininingwane mayelana nesisho esijwayelekile futhi unezinketho ezimbalwa zokushintsha ukusebenza kwayo.
- Isihloli Samagama Esijwayelekile: Kuyisengezo se-firefox esikuvumela ukuthi uhlole izinkulumo ezivamile ezivela kusiphequluli.
Isiphetho
Okwamanje lokho kuphela. Izinkulumo ezijwayelekile ziyinkimbinkimbi kepha ziwusizo. Kuthatha isikhathi ukuwafunda, kepha uma ufana nami, ukudlala nabo kuzobukeka kumnandi futhi, kancane kancane uzobazi kahle. Umhlaba wonke. Kuzoba nokuningi ongakusho okwamanje, ngama-quantifiers angamavila, i-regex yesitayela se-PERL, i-multiline, njll. Futhi-ke uhlelo ngalunye lunezici zalo nokuhlukahluka kwalo, ngakho-ke iseluleko esihle kakhulu engingakunika sona ukuthi uhlale ubheka imibhalo yohlelo oyisebenzisayo ngaso sonke isikhathi lapho kufanele ubhale inkulumo ejwayelekile kuhlelo olusha.
Sawubona! … HEY! … VUKA! … NGABE NONKE NILALELE? 🙂
Amafutha
Eminye yemibono nezibonelo zezinkulumo ezijwayelekile kule ndatshana engizithathe lapha:
- http://sed.sourceforge.net/sed1line.txt
- http://www.thegeekstuff.com/2009/10/unix-sed-tutorial-advanced-sed-substitution-examples/
Ngobungcweti !!!
Akuyona into enkulu leyo, kodwa ngiyabonga kakhulu Ngiyethemba abantu bayayithanda. 🙂
Ngiyayithanda ha!
Lapho-ke kufanele ngabe ngenze okuthile ngokulungile. LOL !! 🙂
Ngiyabonga kakhulu ngokuphawula kwakho.
Fuck qhubeka ubhale ndoda, qhubeka.
@Blaire Pascal: Amazwana afana nelakho ayakhuthaza. 🙂 Ngiyabonga kakhulu !!
Nami ngiyithandile ... ngiyabonga 🙂
Siyabonga ngokuphawula. Ngiyethemba ukubhala ezinye ezimbalwa. 🙂
Okuthunyelwe kwakho kumnandi, ufunda okuningi, kunalokho, ufunda ukwenza imisebenzi ngendlela enhle nephumelelayo.
Ngabe uke wacabanga ngokuqoqa konke okuthunyelwe kwakho kweShell script? Ukuhlungwa ku-pdf kungenza ibhukwana elihle.
Jabula futhi ngiyabonga kakhulu!
Ngibonga kakhulu!! Akuwona umqondo omubi. Okwamanje zimbili kuphela, kepha ngizocabanga ngazo kamuva. 🙂
i-athikili enhle kakhulu, 5+.
Ngiyabonga. Ngiyajabula ukuthi uyayithanda. 🙂
Kuhle kakhulu! Ngidinga ukushintsha le nkulumo elandelayo futhi angazi ukuthi ngikwenze kanjani:
192.168.0.138/Server ngo-192.168.0.111/data
Inkinga ilele kuphawu "/".
Ngisebenzisa umyalo:
thola. -igama "* .txt" -exec sed -i 's / TEXT1 / TEXT2 / g' {} \;
Yini esetshenziselwa ukwenza lolu hlobo lomsebenzi ngokungafani, kepha angikwazi ...
Ngabe ukhona owaziyo ukuthi kufanele ngikwenze kanjani?
Hug!
nguSebha
Okufanele ukwenze ukuphunyuka kumlingiswa onjengalokhu:
thola. -igama "* .txt" -exec sed -i 's / \ / Server / \ / data / g' {} \;
Ungasebenzisa futhi esinye isihlukanisi ku-sed. Akudingeki ukuthi kube ibha. I-Sed ivumela noma yimuphi umlingiswa ukuthi asetshenziswe. Isibonelo, lokhu kuzocaca:
thola. -igama "* .txt" -exec sed -i 's | / Server | / data | g' {} \;
Futhi uma uzokopisha futhi unamathisele imiyalo evela kulawa mazwana, qaphela amamaki wokucaphuna, lelo gama lokushintsha igama liwashintshela lawo athayipha. 🙂
Ukubingelela
Kuhle kakhulu !!!!
Kade ngifuna lesi sixazululo.
Lapha ngishiya umyalo ophelele engiwusebenzisile
thola. -igama "* .txt" -exec sed -i 's | 192 \ .168 \ .0 \ .238 \ / Server | 192 \ .168 \ .0 \ .111 \ / data | g' {} \;
Ukusizakala kwalo myalo ukuthi kuguqula wonke amafayela we-.txt (noma isandiso osifunayo) ngokuphindayo ... Kufanele uqaphele kakhulu!
Kepha kuyasiza kakhulu !!!
Yebo, ngiyabonga ngakho konke kanye nokuhalalisela okuyinkulungwane kulo lonke iqembu.
Ngangihlala ngiwafunda eposini!
Ukugona
nguSebha