NgeTheminali: Kusetshenziswa Izinkulumo Ezijwayelekile II: Ukushintshwa

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:


Amazwana ayi-15, shiya okwakho

Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Ubhekele imininingwane: Miguel Ángel Gatón
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.

  1.   izinga kusho

    Ngobungcweti !!!

    1.    hexborg kusho

      Akuyona into enkulu leyo, kodwa ngiyabonga kakhulu Ngiyethemba abantu bayayithanda. 🙂

      1.    oscar kusho

        Ngiyayithanda ha!

        1.    hexborg kusho

          Lapho-ke kufanele ngabe ngenze okuthile ngokulungile. LOL !! 🙂

          Ngiyabonga kakhulu ngokuphawula kwakho.

          1.    UBlaire pascal kusho

            Fuck qhubeka ubhale ndoda, qhubeka.

          2.    hexborg kusho

            @Blaire Pascal: Amazwana afana nelakho ayakhuthaza. 🙂 Ngiyabonga kakhulu !!

      2.    I-Citux kusho

        Nami ngiyithandile ... ngiyabonga 🙂

        1.    hexborg kusho

          Siyabonga ngokuphawula. Ngiyethemba ukubhala ezinye ezimbalwa. 🙂

  2.   mariano kusho

    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!

    1.    hexborg kusho

      Ngibonga kakhulu!! Akuwona umqondo omubi. Okwamanje zimbili kuphela, kepha ngizocabanga ngazo kamuva. 🙂

  3.   Kiyov kusho

    i-athikili enhle kakhulu, 5+.

    1.    hexborg kusho

      Ngiyabonga. Ngiyajabula ukuthi uyayithanda. 🙂

  4.   sebastian kusho

    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

    1.    hexborg kusho

      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

  5.   sebastian kusho

    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