Kwitheminali: Sebenzisa iiNkcazo eziQhelekileyo ze-II: Ukutshintsha

Ngokwam nqaku yangaphambili Ndikuxelele kwinqanaba elisisiseko ukuba ngamnye wabalinganiswa asetyenziswa kakhulu amabinzana aqhelekileyo asebenza njani. Ngala mabinzana aqhelekileyo kunokwenzeka ukuba wenze uphando oluntsonkothileyo kwiifayile zombhalo okanye kwimveliso yeminye imiyalelo. Kule nqaku ndiza kuchaza indlela yokusebenzisa i-sed command ukufumana nokutshintsha isicatshulwa ngendlela enamandla ngakumbi kunokutshintsha nje isicatshulwa esinye ungene kwesinye.

Okuthe kratya malunga nomyalelo we-grep

Phambi kokuba ndiqale ukuthetha nge-sed, ndingathanda ukuphawula ngakumbi malunga nomyalelo we-grep ukugqibezela okucacisiweyo kwinqaku elidlulileyo. Yonke into endizoyithetha iya kuba kufanelekile nakule. Emva kwexesha siza kubona ubudlelwane phakathi koku kunye nokukhangela.

Ukudibanisa intetho eqhelekileyo

Uninzi lwabalinganiswa abakhethekileyo endikhe ndathetha ngabo kwinqaku eligqithileyo banokudityaniswa, kungekuphela nabanye abalinganiswa, kodwa namagama aqhelekileyo. Indlela yokwenza oku kukusebenzisa umzali ukwenza i-subexpression. Masibone umzekelo woku. Masiqale ngokukhuphela isicatshulwa esinokusisebenzisa kuvavanyo. Luluhlu lwamabinzana. Ngenxa yoko siza kusebenzisa lo myalelo ulandelayo:

curl http://artigoo.com/lista-de-frases-comparativas-comicas 2>/dev/null | sed -n 's/.*\(.*\.\)<\/p>/\1/gp' > frases

 Oku kuyakushiya kulawulo apho usungula khona igama eligama «amabinzana». Ungayivula ukuze ujonge kwaye uhleke kancinci. 🙂

Ngoku masicinge ukuba sifuna ukufumana amabinzana anamagama ama-6 ngokuchanekileyo. Ubunzima kukwakha intetho eqhelekileyo ehambelana negama ngalinye. Igama lilandelelana loonobumba, nokuba ngoonobumba abakhulu okanye oonobumba abancinci, anokuba yinto efana nale '[a-zA-Z]+', kodwa kuya kufuneka uchaze ukuba aba nobumba kufuneka bohlulwe ngabanye oonobumba abangengabo oonobumba, oko kukuthi, kuya kuba yinto efana '[a-zA-Z]+[^a-zA-Z]+'. Masikhumbule: u "^" njengophawu lokuqala ngaphakathi kwizibiyeli lubonisa ukuba sifuna ukutshatisa nabalinganiswa abangekhoyo kuluhlu kwaye u - + "ubonakalisa u-1 okanye nangaphezulu

Sele sinentetho eqhelekileyo enokuthi ifane negama. Ukudibanisa kunye no-6, kuya kufuneka kuphindwe amaxesha ama-6. Ngenxa yoko sisebenzise izitshixo, kodwa akunamsebenzi ukubeka '[a-zA-Z]+[^a-zA-Z]+{6}', kuba u-6 uyakuphinda icandelo lokugqibela lentetho yesiqhelo kwaye into esiyifunayo kukuphinda konke, ke into ekufuneka uyibekile yile: '([a-zA-Z]+[^a-zA-Z]+){6}'. Ngabazali besenza i-subexpression kwaye nge-brace siyiphinda amaxesha ama-6. Ngoku ufuna ukongeza u "^" ngaphambili kunye no "$" ngasemva ukutshatisa wonke umgca. Umyalelo ulandelayo:

grep -E '^([a-zA-Z]+[^a-zA-Z]+){6}$' frases

Iziphumo yile nto besiyifuna:

Iculwa ngakumbi kuneMacarena. Ugqibile ngaphezu koLuis Aguilé. Unenkcubeko encinci kunelitye. Uyazi iilwimi ezininzi kuneCañita Brava. Unemibimbi engaphezulu kukaTutan Khamón. Wazi kancinci kunoRambo malunga nokukhathalela abantwana.

Qaphela ukuba sibeka -E ipharamitha kuba sifuna ukusebenzisa amabinzana aqhelekileyo ukwenza "+" ukusebenza. Ukuba sisebenzise ezisisiseko, kuya kufuneka sibaleke kubakaki kunye nakwizibiyeli.

Ukubhekisa emva okanye ukubuyela umva

Ukuba ukhangele isipelingi, uya kuba noluhlu lwamagama kwi /usr/share/dict/words. Ukuba akunjalo, ungayifaka kwi-arch nge:

sudo pacman -S words

Okanye kwi-debian nge:

sudo aptitude install dictionaries-common

Ukuba uyafuna ungajonga ifayile ukuze ubone ukuba ngawaphi amagama anayo. Ngokwenyani ikhonkco kwifayile yegama lolwimi lwakho olukulo. Unokuba neefayile zamagama ezininzi ezifakwe ngaxeshanye.

Siza kusebenzisa le fayile. Kuyavela ukuba sinomdla wokwazi zonke iileta ezisixhenxe ezikhoyo apho. Kwabo bangaziyo: I-palindrome ligama le-capicúa, Oko kukuthi, inokufundwa ukusuka ekhohlo ukuya ekunene ngokunjalo ukusuka ekunene ukuya ekhohlo. Masizame lo myalelo ulandelayo:

grep '^\(.\)\(.\)\(.\).\3\2\1$' /usr/share/dict/words

Ijongeka ingaqhelekanga, akunjalo? Ukuba siyazama, iziphumo ziya kuxhomekeka kulwimi lwe-distro yakho kunye namagama akuluhlu lwakho, kodwa kwimeko yam, ngolwimi lwaseSpain, isiphumo sesi:

aniline aniline

Makhe sibone ukuba isebenza njani le ntetho.

Ngaphandle kwe "^" kunye ne "$", esele siyazi ukuba yeyantoni, into yokuqala esiyibonayo ngasekhohlo ngamaqela amathathu amachaphaza afakwe kubazali. Musa ukudideka ngemivalo ephambi komzali ngamnye. Bamele babaleke kubazali kuba sisebenzisa amabinzana aqhelekileyo, kodwa abanayo enye intsingiselo. Into ebalulekileyo kukuba sicela abalinganiswa abathathu abanamachaphaza, kodwa ngalinye kula machaphaza livalelwe kubazali. Oku kugcina abalinganiswa abahambelana nala manqaku ukuze baphinde babhekiswe kwakhona kwintetho eqhelekileyo. Olu lolunye usetyenziso lwabazali oluya kuza emva kwexesha lokwenza utshintsho.

Kulapho la manani mathathu angezantsi eza neslash phambi kwabo. Kule meko, ibha ibalulekile. Isetyenziselwa ukubonisa ukuba inani elingezantsi libuyiselwe umva kwaye libhekisa komnye wabazali abangaphambili. Umzekelo: \ 1 ibhekisa kubazali bokuqala, \ 2 ukuya kwesibini, njalo njalo.

Oko kukuthi, ngentetho yesiqhelo esiyibekileyo, into esiyifunayo ngawo onke amagama aqala ngoonobumba abane kwaye ke unobumba ofana nowesithathu, omnye uyafana nowesibini kunye nomnye ofanayo Ekuqaleni. Iziphumo ziileta ezisixhenxe zepalindromes ezikuluhlu lwamagama. Kanye njengoko sasifuna.

Ukuba besisebenzisa amabinzana aqhelekileyo, ngekhe sibaleke kubazali, kodwa ngamagama aqhelekileyo, ukubuyela umva akusebenzi kuzo zonke iinkqubo kuba azimiselweyo. Nangona kunjalo, nge-grep bayasebenza, ukuze ibe yenye indlela yokwenza okufanayo. Ungazama ukuba uyafuna.

Amagama atshintshayo: i-sed command

Ukongeza ekukhangekeni, enye yezona ndlela zisetyenzisiweyo zokuthetha rhoqo kukutshintsha isicatshulwa esintsonkothileyo. Ukwenza oku, enye indlela yokwenza ngayo ngumyalelo we-sed. Amandla e-sed command aya ngaphaya kokutshintsha isicatshulwa, kodwa nantsi ndiza kuyisebenzisela loo nto. Is syntax endiza kuyisebenzisa ngalo myalelo yile ilandelayo:

sed [-r] 's/REGEX/REPL/g' FICHERO

Okanye:

COMANDO | sed [-r] 's/REGEX/REPL/g'

Apho iREGEX iyakuba yinkcazo yesiqhelo yokukhangela kwaye iREPL iya kutshintsha. Gcina ukhumbula ukuba lo myalelo awuyikubuyisela nantoni na kwifayile esiyibonisayo, kodwa into eyenzayo kukusibonisa isiphumo sokufakwa endaweni yesiphelo, ke ungoyiki yimithetho endiza kuyibeka elandelayo. Akukho nanye kuzo eya kuguqula naziphi na iifayile kwindlela yakho.

Masiqale ngomzekelo olula. Sonke sineefayile zoqwalaselo ezahlukileyo kulawulo / njl. Oluhlala luneenkcazo eziqala ngo "#". Masithi sifuna ukubona enye yezi fayile ngaphandle kwezimvo. Umzekelo, ndiza kuyenza nefstab. Ungazama naleyo uyifunayo.

sed 's/#.*//g' /etc/fstab

Andizukubeka isiphumo somyalelo apha kuba kuxhomekeke kwinto onayo kwi-fstab yakho, kodwa ukuba uthelekisa iziphumo zomyalelo kunye nomxholo wefayile uza kubona ukuba zonke izimvo zilahlekile.

Kulo myalelo intetho yokukhangela ithi «#.*", Oko kukuthi" # "kulandelwa naliphi na inani labalinganiswa, oko kukuthi, izimvo. Kwaye ukubuyisela endaweni, ukuba ujonga imivalo emibini ngokulandelelana, uyabona ukuba akukho namnye, ke le nto iyenzayo kukutshintsha amagqabantshintshi nganto, oko kukuthi, ukuzicima. Elula ayinakwenzeka.

Ngoku siza kwenza ngokuchaseneyo. Masicinge ukuba into esifuna ukuyenza kukuphawula yonke imigca yefayile. Masizame ngoluhlobo:

sed 's/^/# /g' /etc/fstab

Uya kubona ukuba, ekuphumeni komyalelo, yonke imigca iqala ngophawu lwe-hash kunye nendawo engenanto. Into esiyenzileyo ithathe indawo yokuqala yomgca nge «# «. Lo ngumzekelo olula apho isicatshulwa esiza kutshintshwa sisoloko sinye, kodwa ngoku siza kuyenza nzima ngakumbi.

Ubabalo lokutshintsha endaweni yokuba endaweni yokubonisa ungasebenzisa ukubuyela umva njengale bendikuxelele ngaphambili. Masibuyele kwifayile yebinzana esiyikhupheleyo ekuqaleni kwenqaku. Siza kufaka kubazali phakathi kwabo bonke oonobumba abakhulu abakhoyo, kodwa siya kuyenza ngomyalelo:

sed 's/\([A-Z]\)/(\1)/g' frases

Into esinayo apha kukubuyela umva kwindawo yokubuyisela ebhekisa kubazali bebinzana lophendlo. Abazali kwindawo yokubonisa engenayo zii-parentheses eziqhelekileyo. Kwindawo yokubuyisela abanantsingiselo ikhethekileyo, babekwa njengoko kunjalo. Isiphumo kukuba onke amagama amakhulu afakwa endaweni yeleta inye, nokuba yeyiphi na, enabazali abangqongileyo.

Kukho omnye umlinganiswa onokusetyenziselwa ukuphindisela intetho, ngu "&" kwaye endaweni yawo yitekisi yonke ehambelana nenkcazo yokukhangela. Umzekelo woku unokubeka onke amabinzana kwifayile kwizicatshulwa. Oku kunokufezekiswa ngalo myalelo:

sed 's/.*/"&"/g' frases

Ukusebenza kwalo myalelo kufana kakhulu nalowo ungaphambili, kuphela ngoku into esiyiyo endaweni yomgca opheleleyo kunye nomgca ofanayo kunye neekowuti ezikufutshane. Kuba sisebenzisa u "&", akukho mfuneko yokubeka iibhloko.

Eminye imiyalelo eluncedo eneentetho eziqhelekileyo

Nantsi imiyalelo embalwa endiyifumeneyo iluncedo okanye inomdla kwaye isebenzisa amabinzana aqhelekileyo. Ngale miyalelo ukusetyenziswa kwamabinzana aqhelekileyo kubhetele kakhulu kunemizekelo endiyenzileyo ukuza kuthi ga ngoku, kodwa kubonakala ngathi kubalulekile ukuba ndicacise into malunga nendlela amabinzana aqhelekileyo asebenza ngayo ukuze uyiqonde.

  • Bonisa amacandelo ephepha lendoda:

man bash | grep '^[A-Z][A-Z ]*$'

Ewe ungawutshintsha umthetho we-bash uye kuyo nayiphi na into oyifunayo. Kwaye emva kwendoda, ungaya ngqo kwicandelo onomdla kulo ulisebenzisayo, ewe, intetho eqhelekileyo. Cinezela «/» ukuqala ukukhangela kunye nokubhala «^ALIASES$»Ukuya kwicandelo le-ALIASES, umzekelo. Ndicinga ukuba lolu lusetyenziso lokuqala endiqale ngalo ukwenza intetho eqhelekileyo kwiminyaka embalwa edlulileyo. Ukuhamba kwamanye amaphepha encwadi phantse akunakwenzeka ngaphandle kweqhinga elinje.

  • Veza amagama abo bonke abasebenzisi bomatshini kubandakanya abakhethekileyo:

sed 's/\([^:]*\).*/\1/' /etc/passwd

  • Bonisa amagama abasebenzisi, kodwa kuphela abo baneqokobhe:

grep -vE '(/false|/nologin)$' /etc/passwd | sed 's/\([^:]*\).*/\1/g'

Ngokwenyani inokwenziwa ngentetho enye yesiqhelo, kodwa indlela yokwenza ingaphaya kwento endikuxelele yona kula manqaku, ke ndiyenzile ngokudibanisa imiyalelo emibini.

  • Faka ikoma phambi kwamanani amathathu okugqibela kuwo onke amanani akwiifayile zamanani:

sed 's/\(^\|[^0-9.]\)\([0-9]\+\)\([0-9]\{3\}\)/\1\2,\3/g' numbers

Isebenza kuphela ngamanani ukuya kuthi ga kumanani amathandathu, kodwa inokubizwa ngaphezulu kwesinye ukubeka isahluli kwamanye amaqela enamanani amathathu.

  •  Susa zonke iidilesi ze-imeyile kwifayile:

grep -E '\<[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\>' FICHERO

  • Yahlula usuku, inyanga kunye nonyaka wayo yonke imihla ebonakala kwifayile:

sed -r 's/([0-9]{2})[/-]([0-9]{2})[/-]([0-9]{4})/Día: \1, Mes: \2, Año: \3/g' FICHERO

  • Fumana i-IP yethu yendawo:

/sbin/ifconfig | grep 'inet .*broadcast' | sed -r 's/[^0-9]*(([0-9]+\.){3}[0-9]+).*/\1/g'

Oku kunokwenziwa ngomyalelo omnye we-sed, kodwa kungcono ndihlule kwi-grep kunye ne-sed ukuze kube lula.

Ezinye iidilesi ezifanelekileyo

Nazi ezinye iidilesi ezinokuba luncedo ngokunxulumene neenkcazo eziqhelekileyo:

  • Ilayibrari yokuchaza rhoqo: Ilayibrari yokubonisa eqhelekileyo apho unokukhangela amabinzana ahambelana nesihloko onomdla kuso. Ukukhangela iidilesi zewebhu, i-ID okanye nantoni na.
  • RegExrUmjongi wentetho oqhelekileyo okwi-Intanethi. Ikuvumela ukuba ufake isicatshulwa kwaye usebenzise intetho eqhelekileyo kuyo okanye ukukhangela okanye ukubuyisela. Inika ulwazi malunga nentetho eqhelekileyo kwaye unokukhetha ezimbalwa ukutshintsha indlela yokuziphatha.
  • Tester rhoqoIsongezo se-firefox esivumela ukukhangela amabinzana aqhelekileyo kwisikhangeli.

Isiphelo

Okwangoku kuphela. Amagqabantshintshi aqhelekileyo anzima kodwa aluncedo. Kuthatha ixesha ukuzifunda, kodwa ukuba ufana nam, ukudlala nabo kuya kubonakala kumnandi kwaye, kancinci kancinci uza kubazi. Ihlabathi liphela. Kusekho into eninzi esinokuyithetha malunga ne-quantifiers eyonqenayo, i-PERL-style regex, multiline, njl. Kwaye ke inkqubo nganye ineempawu zayo kunye nokwahluka kwayo, ke elona cebiso lilungileyo ndinokukunika lona kukuhlala ujonga amaxwebhu enkqubo oyisebenzisayo ngalo lonke ixesha kufuneka ubhale intetho rhoqo kwinkqubo entsha.

Hee! … HEYI! … VUKA! … WENZA NTONI ULELE NONKE? 🙂

Imithombo

Eminye yemibono kunye nemizekelo yamagama aqhelekileyo kweli nqaku endilithathileyo apha:


Shiya uluvo lwakho

Idilesi yakho ye email aziyi kupapashwa. ezidingekayo ziphawulwe *

*

*

  1. Uxanduva lwedatha: UMiguel Ángel Gatón
  2. Injongo yedatha: Ulawulo lwe-SPAM, ulawulo lwezimvo.
  3. Umthetho: Imvume yakho
  4. Unxibelelwano lwedatha: Idatha ayizukuhanjiswa kubantu besithathu ngaphandle koxanduva lomthetho.
  5. Ukugcinwa kweenkcukacha
  6. Amalungelo: Ngalo naliphi na ixesha unganciphisa, uphinde uphinde ucime ulwazi lwakho.

  1.   iyeva sitsho

    Ngobungcali !!!

    1.    ileborg sitsho

      Akubi kangako, kodwa enkosi kakhulu. Ndiyathemba ukuba abantu bayayithanda. 🙂

      1.    Oscar sitsho

        Ndiyayithanda ha!

        1.    ileborg sitsho

          Emva koko kuya kufuneka ndenze into elungileyo. INDLELA YOKUBONISA UKUHLEKA!! 🙂

          Enkosi kakhulu ngengcaciso yakho.

          1.    UBlaire pascal sitsho

            Fuck qhubeka ubhala ndoda, yigcine.

          2.    ileborg sitsho

            @Blaire Pascal: Amagqabantshintshi afana nawakho ayakhuthaza. Enkosi kakhulu !!

      2.    Isixeko sitsho

        Ndiyithandile ... enkosi 🙂

        1.    ileborg sitsho

          Enkosi ngengcaciso. Ndiyathemba ukubhala ezinye ezimbalwa. 🙂

  2.   mariano sitsho

    Izithuba zakho ziyamnandi, ufunda okuninzi, endaweni yoko, ufunda ukwenza imisebenzi ngendlela entle nenempumelelo.

    Ngaba ukhe wacinga ngokuqokelela zonke iiposti zakho zeShell? Ukuhlelwa kwi-pdf kuya kwenza incwadana enkulu.

    Vuyisa kwaye ndiyabulela kakhulu!

    1.    ileborg sitsho

      Ndiyabulela kakhulu!! Ayilombono mbi. Okwangoku zimbini kuphela, kodwa ndiza kucinga ngazo kamva. 🙂

  3.   eKiyov sitsho

    Inqaku elilunge kakhulu, 5+.

    1.    ileborg sitsho

      Enkosi. Ndiyavuya uyayithanda. 🙂

  4.   Sebastian sitsho

    Ogqwesileyo! Ndidinga ukutshintsha eli binzana kwaye andazi ukuba ndenze njani:
    192.168.0.138/Server ngo-192.168.0.111/data
    Ingxaki ilele kwisimboli "/".
    Ndisebenzisa lo myalelo:
    fumana. -igama "* .txt" -exec sed -i 's / TEXT1 / TEXT2 / g' {} \;
    Yintoni esetyenziselwa ukwenza olu hlobo lomsebenzi ngokungakhathali, kodwa andikwazi ...
    Ngaba ukhona umntu owaziyo ukuba kufuneka ndenze njani?
    Wanga!
    nguSebha

    1.    ileborg sitsho

      Into ekufuneka uyenzile kukubaleka isimilo ngolu hlobo:

      fumana. -igama "* .txt" -exec sed -i 's / \ / Server / \ / data / g' {} \;

      Unokusebenzisa omnye umahluli kwi-sed. Akunyanzelekanga ukuba ibhar. I-Sed ivumela naluphi na uphawu ukuba lusetyenziswe. Umzekelo, oku kuya kucaca gca:

      fumana. -igama "*. txt" -exec sed -i 's | / Server | / data | g' {} \;

      Kwaye ukuba uza kukopa kwaye uncamathisele imiyalelo evela kolu luvo, lumka ngeempawu zokucaphula, i-wordpress iyazitshintshela ezo zichwetheza. 🙂

      Ukubulisa

  5.   Sebastian sitsho

    Zintle !!!!
    Kudala ndikhangela isisombululo ixesha elide.
    Apha ndishiya umyalelo opheleleyo endiwusebenzisileyo

    fumana. -igama "*.

    Uncedo lwalo myalelo kukuba utshintsha zonke iifayile ze-.txt (okanye ulwandiso olufunayo) eziphindayo ... Kuya kufuneka ulumke kakhulu!
    Kodwa iluncedo kakhulu !!!

    Ewe, enkosi ngayo yonke into kunye newaka lokuvuyisana neqela liphela.
    Ndandihlala ndizifunda eposini!
    Ukuwola
    nguSebha