Iyada oo Terminal: Isticmaalka muujinta joogtada ah II: Beddelaad

Naftayda maqaal hore Waxaan kuugu sheegay heer aasaasi ah sida mid kasta oo ka mid ah astaamaha gaarka loo isticmaalo ee muujinta joogtada ahi u shaqeeyaan. Erayadaan caadiga ah waxaa suurtagal ah in lagu sameeyo baaritaanno adag oo faylasha qoraalka ah ama soo saarista amarrada kale ah. Maqaalkan waxaan ku sharaxayaa sida loo isticmaalo amarka sed si loo helo loona beddelo qoraalka qaab aad u awood badan marka loo eego si fudud oo hal qoraal loogu beddelo mid kale.

Wax yar ka badan oo ku saabsan amarka grep

Kahor intaanan bilaabin kahadalka sed, waxaan jeclaan lahaa inaan waxyar ka faalloodo amarka grep si aan u dhameystiro wixii lagu sharaxay maqaalkii hore xoogaa. Wax kasta oo aan sheegi doono waxay la mid noqon doonaan midkan sidoo kale. Mar dambe ayaan arki doonaa xiriirka ka dhexeeya kan iyo raadinta.

Isugeynta tibaaxaha joogtada ah

Qaar badan oo ka mid ah jilayaasha gaarka ah ee aan kaga hadlay maqaalkii hore waa la isku dari karaa, maahan oo keliya jilayaal kale, laakiin waa la muujiyaa hadallo caadi ah. Habka loo sameeyo tan waa in loo isticmaalo qaansooyinka si loo sameeyo subexpression. Aan aragno tusaale tan. Aynu ku bilowno soo degsashada qoraal aan u adeegsan karno tijaabinta. Waa liiska weedho. Taas waxaan u adeegsaneynaa amarka soo socda:

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

 Tani waxay kaaga tagi doontaa galka aad ka furayso feylka loo yaqaan «phrases». Waad furi kartaa si aad u fiirsato oo aad ugu yar qosasho. 🙂

Hadda aan u malayno inaan rabno inaan helno weedho si sax ah u leh 6 erey. Dhibaatadu waxay tahay sameynta muujinta caadiga ah ee u dhiganta erey kasta. Ereygu waa xarfo isku xigxigta, mid waawayn ama mid yar, oo wax uun noqon lahaa '[a-zA-Z]+', laakiin sidoo kale waa inaad sheegtaa in xarfahan ay tahay in lagu kala saaro astaamo kale oo aan ahayn xarfaha, taasi waa, waxay noqon laheyd wax sida '[a-zA-Z]+[^a-zA-Z]+'. Aynu xusuusano: "^" sida astaamaha ugu horeeya ee qaansooyinku tilmaamayaan inaan doonayno inaan la jaanqaadno jilayaal aan ku jirin safafka iyo "+" waxay muujineysaa 1 ama xarfo ka badan.

Waxaan horey u leenahay weedho caadi ah oo u dhiganta erey. Si loogu lammaaneeyo 6, waxay noqon doontaa in lagu celiyo 6 jeer. Taas waxaan u isticmaalnay furayaasha, laakiin waa wax aan faa'iido lahayn in la dhigo '[a-zA-Z]+[^a-zA-Z]+{6}', maxaa yeelay 6da waxay ku celcelin doonaan qeybta ugu dambeysa ee muujinta caadiga ah iyo waxa aan dooneyno waa inaan ku celino dhammaantood, marka waxa aan dhigeyno waa tan: '([a-zA-Z]+[^a-zA-Z]+){6}'. Qaamuusyada waxaan ku sameysaneynaa subexpression oo xargaha waxaan ku celinaa 6 jeer. Hadda waxaad u baahan tahay oo keliya inaad ku darto "^" xagga hore iyo "$" gadaal si aad uhesho khadka oo dhan. Amarku waa sida soo socota:

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

Natiijaduna waa waxa aan dooneynay:

Way ka hees badan tahay Macarena. Adigu waad ka dhammad badan tahay Luis Aguilé. Waxaad ka dhaqan yartahay dhagax. Waxaad ka taqaan luqado badan Cañita Brava. Wuxuu leeyahay laalaab ka badan Tutan Khamón. In ka yar Rambo ayaad ka ogtahay daryeelka carruurta.

Ogsoonow inaan dhigno cabirka -E maxaa yeelay waxaan dooneynaa inaan adeegsanno tibaaxyo joogto ah oo dheereeya si aan "+" u shaqeyno Haddii aan adeegsan lahayn kuwa aasaasiga ah, waxaan ku khasbanaan lahayn inaan ka baxno qawska iyo xargaha.

Tixraacyo dhab ah ama tixraacyo

Haddii aad leedahay hubi higaadee rakibay, waxaad u badan tahay inaad liis ereyo ah ku dhex leedahay /usr/share/dict/words. Haddii kale, waxaad ku rakibi kartaa qaanso:

sudo pacman -S words

Ama debian ah oo leh:

sudo aptitude install dictionaries-common

Haddii aad rabto waxaad fiirin kartaa feylka si aad u aragto ereyada uu leeyahay. Xaqiiqdii waa iskuxiraha feylka ereyga ee luqadda ay kujirto. Waad ku rakiban kartaa dhowr fayl oo eray ah isla waqtigaas.

Waxaan isticmaaleynaa feylkaas. Waxaa ii soo baxday in aan aad u xiiseyno in aan ogaanno dhammaan toddobada xaraf ee palindromes halkaas. Kuwa aan aqoon: Palindrome waa eray weyn, oo ah, waxaa laga akhrisan karaa bidix ilaa midig iyo sidoo kale midig ilaa bidix. Aynu isku dayno amarka soo socda:

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

Waxay umuuqataa waxoogaa qariib ah, sax? Haddii aan isku dayno, natiijadu waxay ku xirnaan doontaa luqadda distro-gaaga iyo ereyada liiskaaga ku jira, laakiin kiiskeyga, oo ah luuqadda Isbaanishka, natiijadu waa tan:

aniline aniline rogid

Aan aragno sida ereygan caadiga ahi u shaqeeyo.

Marka laga reebo "^" iyo "$", oo aan hore u naqaannay waxa loogu talagalay, waxa ugu horreeya ee aan bidix ka aragno waa saddex kooxood oo dhibco ah oo ku lifaaqan qawska. Ha ku jahwareerin baararka hortooda ku yaal qaws kasta. Waa inay ka baxsadaan qawska maxaa yeelay waxaan adeegsanaynaa muujinta caadiga ah, laakiin ma lahan macno kale. Muhiimadu waa inaan weydiisaneyno seddex xarfood oo leh dhibco, laakiin mid kasta oo ka mid ah dhibcahaas waxaa lagu lifaaqay qaws. Tani waa in la badbaadiyo astaamaha u dhigma qodobbadaas si markaa mar labaad looga tixraaco muujinta caadiga ah. Kani waa adeegsi kale oo kaabashka ah oo hadhow ku anfacaya samaynta beddelid.

Halkani waa halka saddexda lambar ee hoos ku qorani ay la yimaadaan isugeynta hortooda. Xaaladdan oo kale, baarku waa muhiim. Waxaa loo isticmaalaa in lagu muujiyo in lambarka hoose uu tixraac yahay oo uu u jeedo mid ka mid ah labada waalid ee hore. Tusaale ahaan: \ 1 waxaa loola jeedaa qaansada koowaad, \ 2 ta labaad, iyo wixii la mid ah.

Taasi waa, muujinta caadiga ah ee aan dhignay, waxa aan raadineyno waa dhammaan ereyada ka bilaabma wax kasta oo afar xaraf ah ka dibna leh xaraf la mid ah kan saddexaad, mid kale oo la mid ah kan labaad iyo mid kale oo la mid ah kan marka hore. Natiijadu waa toddobada xaraf ee palindromes ee ku jira liiska ereyga. Sidii aan rabnay.

Haddii aan adeegsanayna tibaaxaha caadiga ah ee dheereeya, qaansooyinku ma ahan in laga baxsado, laakiin muujinta joogtada ah ee la kordhiyay, tixraacyadu kama shaqeynayaan barnaamijyada oo dhan maxaa yeelay iskuma jiraan. Si kastaba ha noqotee, dufan waxay ku shaqeeyaan, markaa taasi waxay noqon kartaa hab kale oo isku mid ah. Waad isku dayi kartaa hadaad rabto.

Tilmaamaha bedelka: amarka sed

Raadinta ka sokow, mid ka mid ah adeegsiga ugu wanaagsan ee muujinta joogtada ah waa in la beddelo qoraallada qalafsan. Si tan loo sameeyo, hal dariiqo oo lagu sameeyo ayaa leh amarka sed. Awoodda amarka sed wuxuu aad uga fog yahay bedelida qoraalka, laakiin halkan waxaan u isticmaali doonaa taas. Qaaciddada aan ku isticmaali doono amarkan waa kuwan soo socda:

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

Ama sidoo kale:

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

Halka REGEX uu noqon doono muujinta joogtada ah ee BADBAADADA midna. Maskaxda ku hay in amarkan uusan runti beddelin wax kasta oo feylka ku jira oo aan tilmaamno, laakiin waxa ay qabato ayaa na tusaya natiijada beddelka terminalka, marka ha ka baqin amarrada aan xigi doono. Midkoodna ma doonayo inuu wax ka beddelo faylasha nidaamkaaga.

Aynu ku bilowno tusaale fudud. Dhammaanteen waxaan leenahay feylal isku duuban oo kala duwan oo ku jira galka / iwm oo badanaa leh faallooyin ka bilaabmaya "#". Ka soo qaad inaan dooneyno inaan aragno mid ka mid ah feylashaas oo aan lahayn faallooyinka. Tusaale ahaan, waxaan ku sameyn doonaa fstab. Waxaad isku dayi kartaa midka aad rabto.

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

Uma doonayo inaan halkan ku dhigo natiijada amarka maxaa yeelay waxay kuxirantahay waxaad kuhesho fstab-kaaga, laakiin hadaad isbarbardhigto soo saarida amarka iyo nuxurka feylka waxaad arki doontaa in dhamaan faallooyinkii lawaayay.

Amarkani muujinta raadintu waa «#.*", Taasi waa" # "oo ay ku xigto tiro jilayaal ah, taasi waa, faallooyinka. Iyo muujinta bedelka, haddii aad eegto labada baararka ee isku xigta, waxaad arki doontaa inaysan jirin, marka waxa ay sameyneyso waxay ku beddelayaan faallooyinka waxba, taas oo ah, tirtirka. Fudud aan macquul aheyn

Hadda waxaan sameyneynaa wax ka soo horjeeda. Ka soo qaad in waxa aan dooneyno ay tahay inaan ka faalloono dhammaan khadadka faylka. Aan isku dayno sidan:

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

Waxaad arki doontaa taas, amarka soo-saarista, dhammaan khadadka waxay ku bilaabmaan calaamadda hash iyo meel bannaan. Waxa aan qabanay waa inaan ku badalno bilowga xariiqda «# «. Tani sidoo kale waa tusaale fudud oo fudud oo qoraalka la beddelayo had iyo jeer isku mid yahay, laakiin hadda waxaannu sii adkeyn doonnaa xoogaa yar.

Fadliga bedellada ayaa ah in muujinta beddelka waxaad u adeegsan kartaa tixraacyo sida kuwii aan horay kuugu sheegay. Aynu dib ugu noqonno faylka weedha ee aan soo degsannay bilowga maqaalka. Waxaan ku dhejin doonnaa qaansooyinka dhammaan xarfaha waaweyn ee jira, laakiin waxaan ku sameyn doonnaa amar:

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

Waxa aan halkaan ku hayno waa tixraac xagga muujinta beddelka ah oo loola jeedo qawska muujinta raadinta. Qaamuusyada ku jira muujinta beddelaaddu waa qaansooyin caadi ah. Muujinta bedelka macno gaar ah kuma lahan, waxaa loo dhigaa sida ay tahay. Natiijadu waxay tahay in dhammaan xarfaha waaweyn lagu beddelo isla xarafkaas, wax kastoo uu yahay, oo leh qaws ku wareegsan.

Waxaa jira astaamo kale oo sidoo kale loo isticmaali karo muujinta beddelka, waa "&" waxaana lagu beddelay dhammaan qoraalka u dhigma muujinta raadinta. Tusaale ahaan tan waxay noqon kartaa in weedhaha oo dhan feylka lagu qoro xigashooyin. Tan waxaa lagu gaari karaa amarkan:

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

Hawlgalka amarkan wuxuu aad ugu egyahay kii hore, kaliya hada waxa aan badalayno waa khadka oo dhan oo isla xariiq ah isla markaana xigashooyin ku xeeran. Maaddaama aan isticmaaleyno "&", muhiim maahan in la dhigo qaws.

Qaar ka mid ah amarrada waxtarka leh leh muujinta joogtada ah

Waa kuwan dhawr amarro oo aan u arko inay faa'iido leeyihiin ama xiiso leeyihiin oo adeegsada tibaaxaha joogtada ah. Amarradan awgood adeegsiga muujinta joogtada ahi aad ayuu ugafiican yahay tusaalooyinka aan ilaa hadda ku siiyay, laakiin waxay ila ahayd muhiim inay i sharraxdo wax ku saabsan sida tibaaxaha joogtada ahi u shaqeeyaan si aan u fahmo.

  • Muuji qaybaha bogga nin:

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

Dabcan, waxaad ubadali kartaa amarka bashka wax alla wixii aad rabto. Kadibna ninka, waxaad si toos ah ugu tagi kartaa qaybta xiisaha kuu leh adiga, dabcan, muujinta caadiga ah. Riix «/» si aad u bilowdo raadinta oo u qor «^ALIASES$»Inaad tagto qaybta ALIASES, tusaale ahaan. Waxaan u maleynayaa inay tani tahay adeegsiga ugu horreeya ee aan bilaabay inaan muujiyo muujinta joogtada ah dhowr sano ka hor. Inaad u guurto bogagga qaarkood ee buug-gacmeedku waa wax aan macquul ahayn iyada oo aan xeelad sidan oo kale ah dhicin

  • Tus magacyada dhammaan isticmaaleyaasha mishiinka oo ay ku jiraan kuwa khaaska ah:

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

  • Tus magacyada isticmaalaha, laakiin kaliya kuwa leh qolof:

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

Runtii waxaa lagu samayn karaa hal erey oo caadi ah, laakiin sida loo sameeyo waxay ka badan tahay wixii aan kugu sheegay maqaalladaan, sidaa darteed waxaan ku sameeyay anigoo isku daraya laba amar.

  • Geli comma kahor saddexda lambar ee ugu dambeeya dhammaan lambarrada kujira faylka nambarada:

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

Kaliya waxay ku shaqeysaa lambarrada illaa 6 lambar, laakiin waxaa loo yeeri karaa in ka badan hal jeer si loo dhigo kuwa kala sooca kooxaha kale ee saddexda lambar ah.

  •  Ka saar dhammaan cinwaanada emaylka faylka:

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

  • Kala sooc maalinta, bisha iyo sanadka dhammaan taariikhaha ku qoran feyl:

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

  • Soo hel IP-ga maxalliga ah:

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

Tan waxaa sidoo kale lagu sameyn karaa hal amar oo sed ah, laakiin waxaan si fiican ugu kala soocayaa dufan iyo sed fudud.

Cinwaano waxtar leh

Halkan waxaa ku yaal cinwaanno laga yaabo inay faa'iido u leeyihiin laxiriirta muujinta caadiga ah:

  • Maktabada muujinta joogtada ah: Waa maktabad muujinta caadiga ah oo aad ka raadin karto tibaaxaha joogtada ah ee la xiriira mowduuca aad xiiseyneyso. Si aad u raadiso cinwaanada shabakadda, Aqoonsiga ama wixii kale.
  • Deeqo: Hubiyaha muujinta joogtada ah ee khadka tooska ah. Waxay kuu ogolaaneysaa inaad gasho qoraal oo aad ku dabaqdo muujinta caadiga ah midkood raadso ama beddel. Waxay ku siinaysaa macluumaad ku saabsan muujinta caadiga ah waxaadna haysataa dhawr fursadood oo aad ku beddeli karto dhaqankeeda.
  • Tijaabiyaha Muujinta Joogtada ah: Waa addon loogu talagalay Firefox-ka kuu oggolaanaya inaad ka hubiso muujinta joogtada ah biraawsarka.

Gabagabo

Hadda waa intaas. Tilmaamaha joogtada ahi waa kuwo dhib badan laakiin waxtar leh. Waqti ayey qaadataa in la barto, laakiin haddii aad aniga oo kale tahay, la ciyaaristooda waxay umuuqataa mid xiiso leh oo, tartiib-tartiib ayaad u baran doontaa. Waa adduun dhan. Waxaa jiri lahaa waxyaabo badan oo laga dhaho weli, oo ku saabsan tirakoobyada caajiska ah, PERL-style regex, multiline, iwm. Kadibna barnaamij kastaa wuxuu leeyahay astaamo iyo noocyadiisa, sidaa darteed talada ugu fiican ee aan ku siin karo ayaa ah inaad markasta fiiriso dukumiintiyada barnaamijka aad isticmaaleyso mar kasta oo ay tahay inaad ku qorto muujinta caadiga ah barnaamij cusub.

Haye! Y HEY! KE KACO! MAXAAD DHAMMAAN SAMAYNAYSAAN Hurdada? 🙂

Fuentes

Qaar ka mid ah fikradaha iyo tusaalooyinka muujinta joogtada ah ee maqaalkan ayaan ka soo qaatay halkan:


Ka tag faalladaada

cinwaanka email aan la daabacin doonaa. Beeraha loo baahan yahay waxaa lagu calaamadeeyay la *

*

*

  1. Masuul ka ah xogta: Miguel Ángel Gatón
  2. Ujeedada xogta: Xakamaynta SPAM, maaraynta faallooyinka.
  3. Sharci: Oggolaanshahaaga
  4. Isgaarsiinta xogta: Xogta looma gudbin doono dhinacyada saddexaad marka laga reebo waajibaadka sharciga ah.
  5. Kaydinta xogta: Macluumaadka ay martigelisay Shabakadaha Occentus (EU)
  6. Xuquuqda: Waqti kasta oo aad xadidi karto, soo ceshan karto oo tirtiri karto macluumaadkaaga.

  1.   faahfaahsan dijo

    Masterly !!!

    1.    hexborg dijo

      Maaha wax aad u xun, laakiin aad baad u mahadsan tahay. Rajaynaynaa in dadku jecel yihiin. 🙂

      1.    Oscar dijo

        Waan jeclahay ha!

        1.    hexborg dijo

          Markaas waa inaan wax sax ah qabtay. LOL !! 🙂

          Aad baad ugu mahadsantahay faalladaada.

          1.    Blaire pascal dijo

            Fuck sii qor nin, sii wad.

          2.    hexborg dijo

            @Blaire Pascal: Faallooyinka sidaada oo kale ah way dhiirrigeliyaan. Very Aad baad u mahadsantahay !!

      2.    Magaalada dijo

        Sidoo kale waan ka helay ... mahadsanid 🙂

        1.    hexborg dijo

          Waad ku mahadsantahay faallooyinkaaga. Waxaan rajeynayaa in aan qoro wax yar oo kale. 🙂

  2.   mariano dijo

    Qoraaladaadu waa kuwo fantastik ah, waxbadan ayaad baraneysaa, halkii, waxaad baraneysaa inaad howlo ku qabato si xarrago iyo hufnaan leh.

    Miyaad ka fikirtay ururinta dhamaan qoraalada qoraalo qolofkaaga? Lagu kala soocay pdf wuxuu sameyn lahaa buug gacmeed weyn.

    Farxad iyo mahadsanid aad u badan!

    1.    hexborg dijo

      Aad baad u mahadsantahay !! Maaha fikrad xun. Xilligan la joogo laba kaliya ayaa jira, laakiin mar dambe ayaan ka fikiri doonaa. 🙂

  3.   Kiyov dijo

    maqaal aad u wanaagsan, 5+.

    1.    hexborg dijo

      Mahadsanid. Waan ku faraxsanahay inaad jeceshahay. 🙂

  4.   Sebastian dijo

    Aad u fiican! Waxaan ubaahanahay inaan badalo muujinta soo socota mana garanayo sida loo sameeyo:
    192.168.0.138/Server by 192.168.0.111/data
    Dhibaatadu waxay ku jirtaa astaanta "/".
    Waxaan isticmaalayaa amarka:
    hel. -name "* .txt" -exec sed -i 's / TEXT1 / TEXT2 / g' {} \;
    Maxaa loo adeegsadaa in lagu qabto hawsha noocan ah si dhib yar, laakiin ma awoodo ...
    Ma jiraa qof garanaya sida ay tahay inaan sameeyo?
    Hug!
    Sebaa

    1.    hexborg dijo

      Waxa ay tahay inaad sameyso waa inaad ka baxsato dabeecada sidan oo kale ah:

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

      Waxa kale oo aad u isticmaali kartaa kalasad kale sed. Maaha inay bar ahaato. Sed wuxuu oggol yahay dabeecad kasta in loo isticmaalo. Tusaale ahaan, tani way ka caddaan laheyd:

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

      Hadana haddii aad nuqul ka samaynaysid oo aad ku dhajinaysid amarrada faallooyinkaan, ka taxaddar calaamadaha oraahda, ereyga qoraalka ayaa u beddelaya kuwa wax qora. 🙂

      Thanks.

  5.   Sebastian dijo

    Heer sare !!!!
    Waxaan raadinayey xalkan muddo dheer.
    Halkan waxaan uga tagayaa amarka dhameystiran ee aan adeegsaday

    hel. -name "* .txt" -exec sed -i 's | 192 \ .168 \ .0 \ .238 \ / Server | 192 \ .168 \ .0 \ .111 \ / data | g' {} \;

    Faa'iidada amarkani waa inuu beddelo dhammaan faylasha .txt (ama kordhinta aad rabto) si isdaba joog ah ... Waa inaad aad uga taxaddartaa!
    Laakiin waa waxtar badan !!!

    Hagaag, waad ku mahadsantihiin wax walba iyo kun hanbalyo kooxda oo dhan.
    Marwalba waan ka aqriyaa iyaga boostada!
    Dhiqlaha
    Sebaa