Tare da Terminal: Amfani da Maganganu Na Yau da kullun II: Sauyawa

A Kaina previous article Na gaya muku a matakin farko yadda kowane ɗayan haruffa na musamman masu amfani da maganganu na yau da kullun suke aiki. Tare da waɗannan maganganun na yau da kullun yana yiwuwa a yi rikitarwa bincike a cikin fayilolin rubutu ko cikin fitowar wasu umarnin. A cikin wannan labarin zan bayyana yadda za a yi amfani da umarnin sed don nemowa da maye gurbin rubutu ta hanyar da ta fi ƙarfi fiye da sauƙaƙa sauya rubutu ɗaya zuwa wani.

Kadan kadan game da umarnin grep

Kafin na fara magana game da sed, Ina son yin tsokaci kaɗan game da umarnin grep don kammala abin da aka bayyana a cikin labarin da ya gabata kaɗan. Duk abin da zan faɗi zai dace da wannan ɗin kuma. Daga baya zamu ga alaƙar da ke tsakanin wannan da bincike.

Hada maganganun yau da kullun

Yawancin haruffa na musamman waɗanda na yi magana a kansu a cikin labarin da ya gabata ana iya haɗuwa, ba kawai tare da sauran haruffa ba, amma tare da cikakkun maganganun yau da kullun. Hanyar yin hakan ita ce ta amfani da maƙala don ƙirƙirar nuna damuwa. Bari mu ga misalin wannan. Bari mu fara da saukar da rubutu wanda zamu iya amfani dashi don gwaji. Jerin jimloli ne. Don haka za mu yi amfani da umarni mai zuwa:

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

 Wannan zai bar ku a cikin kundin adireshi inda kuka ƙaddamar da fayil mai suna «phrases». Kuna iya buɗe shi don kallo kuma ku ɗan yi dariya. 🙂

Yanzu bari muyi tunanin cewa muna son nemo kalmomin da suke da kalmomi 6 daidai. Matsalar tana cikin ƙirƙirar magana ta yau da kullun wacce ta dace da kowace kalma. Kalma jeren haruffa ne, ko dai babban harafi ko karamin rubutu, wanda zai zama wani abu kamar haka '[a-zA-Z]+', amma kuma dole ne ku tantance cewa waɗannan haruffa dole ne wasu haruffa su raba su fiye da haruffa, ma'ana, zai zama wani abu kamar '[a-zA-Z]+[^a-zA-Z]+'. Ka tuna: "^" kamar yadda haruffa na farko suka fara nunawa cewa muna son dacewa da haruffan da basa cikin jeri kuma "+" yana nuna haruffa 1 ko fiye.

Mun riga mun sami maganganun yau da kullun wanda zai iya dacewa da kalma. Idan za'a hada shi da 6, za'a maimata shi sau 6. Don haka mun yi amfani da makullin, amma ba shi da amfani a saka '[a-zA-Z]+[^a-zA-Z]+{6}', saboda 6 zasu maimaita sashin karshe na maganganun yau da kullun kuma abin da muke so shine maimaita shi duka, don haka abin da zaku saka shine: '([a-zA-Z]+[^a-zA-Z]+){6}'. Tare da maƙalai muna yin subexpression kuma tare da takalmin katako muna maimaita shi sau 6. Yanzu kawai kuna buƙatar ƙara "^" a gaba da "$" a baya don daidaita dukkan layin. Umurnin kamar haka:

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

Kuma sakamakon shine kawai abin da muke so:

An fi rera waka fiye da Macarena. Kun fi Luis Aguilé ƙarewa. Kuna da karancin al'adu kamar dutse. Kun san harsuna fiye da Cañita Brava. Yana da wrinkles fiye da Tutan Khamón. Ba ku san ƙasa da Rambo ba game da kula da yara.

Lura cewa mun sanya ma'aunin -E saboda muna son amfani da maganganu na yau da kullun don sanya "+" aiki. Idan muka yi amfani da na asali, lallai ne mu tsere wa iyaye da takalmin katako.

Baya nassoshi ko baya baya

Idan kuna da alamun duba sihiri, tabbas kuna da jerin kalmomi a ciki /usr/share/dict/words. Idan ba haka ba, zaku iya shigar da shi cikin baka tare da:

sudo pacman -S words

Ko a cikin debian tare da:

sudo aptitude install dictionaries-common

Idan kanaso zaka iya duban file din don ganin wadanne kalmomi yake dashi. A gaskiya yana haɗi zuwa fayil ɗin fayil na yaren da distro ɗinku yake. Kuna iya shigar da fayilolin kalma da yawa a lokaci guda.

Za mu yi amfani da wannan fayil ɗin. Ya zama cewa muna da sha'awar sanin duk wasiƙun wasiƙa guda bakwai a can. Ga wadanda basu sani ba: Kalmar kalmomin kalma ce, ma'ana, ana iya karanta ta daga hagu zuwa dama haka kuma daga dama zuwa hagu. Bari mu gwada umarni mai zuwa:

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

Da alama baƙon abu ne, dama? Idan muka gwada shi, sakamakon zai dogara ne akan harshen distro ɗinku da kalmomin da suke cikin jerin ku, amma a halin da nake ciki, tare da yaren Mutanen Espanya, sakamakon shine wannan:

aniline aniline mirgina

Bari mu ga yadda wannan magana ta yau da kullun take aiki.

Baya ga "^" da "$", wanda mun riga mun san abin da ake amfani da shi, abu na farko da muke gani a hannun hagu ƙungiyoyi ne na maki huɗu da aka keɓe a cikin zannu. Kada ku damu da sandunan da ke gaban kowane zance. Dole ne su tsere wa iyayen yara saboda muna amfani da maganganu na yau da kullun, amma ba su da wata ma'ana. Abu mai mahimmanci shine muna neman kowane haruffa uku tare da dige, amma kowane ɗayan waɗannan dige an saka su a cikin iyaye. Wannan don adana haruffan da suka dace da waɗancan maki don a sake yin nuni dasu daga maganganun yau da kullun. Wannan wani amfani ne na iyaye wanda zai zo da amfani daga baya don yin maye gurbin.

Anan ne lambobi uku da ke ƙasa suka zo tare da yankan gaba a gabansu. A wannan yanayin, mashaya tana da mahimmanci. Ana amfani dashi don nuna cewa lambar da ke ƙasa baya baya kuma yana nufin ɗayan iyayen da suka gabata. Misali: \ 1 yana nufin keɓance na farko, \ 2 zuwa na biyu, da sauransu.

Watau, tare da maganar yau da kullun da muka sanya, abin da muke nema shine duk kalmomin da suka fara da kowane haruffa huɗu sannan kuma suna da harafi iri ɗaya da na uku, wani kuma yana daidai da na biyu da wani wanda yake daidai da na na farko. Sakamakon haka shine alamun ƙananan haruffa bakwai waɗanda suke cikin jerin kalmomin. Kamar yadda muke so.

Idan muna amfani da tsawan maganganu na yau da kullun, ba lallai bane mu tsere wa iyaye, amma tare da faɗaɗa na yau da kullun, baya baya aiki a cikin duk shirye-shiryen saboda ba'a daidaita su ba. Koyaya, tare da grep suna aiki, don haka yana iya zama wata hanyar yin hakan. Kuna iya gwada shi idan kuna so.

Maganganun maye gurbin: umarnin sed

Baya ga bincike, ɗayan mafi kyawun amfani da maganganun yau da kullun shine maye gurbin rubutattun rubutu. Don yin wannan, hanya ɗaya da za a yi shi tare da umarnin sed. Ofarfin umarnin sed ya wuce maye gurbin rubutu, amma a nan zan yi amfani da shi don wannan. Haɗin da zan yi amfani da shi tare da wannan umarnin shine mai zuwa:

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

Ko kuma:

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

Inda REGEX zai zama bayanin bincike na yau da kullun kuma REPL zai zama maye gurbin. Ka tuna cewa wannan umarnin ba da gaske maye gurbin komai a cikin fayil ɗin da muke nunawa ba, amma abin da yake aikatawa yana nuna mana sakamakon maye gurbin a cikin tashar, don haka kada ku firgita da umarnin da zan sanya gaba. Babu ɗayansu da zai gyara kowane fayel akan tsarinku.

Bari mu fara da misali mai sauki. Dukanmu muna da fayilolin sanyi iri daban-daban a cikin kundin adireshin / sauransu waɗanda yawanci suna da maganganun farawa da "#". A ce muna son ganin ɗayan waɗannan fayilolin ba tare da sharhi ba. Misali, zan yi shi da fstab. Kuna iya gwadawa da wanda kuke so.

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

Ba zan sanya sakamakon umarnin ba a nan saboda ya dogara da abin da kuke da shi a cikin fstab ɗin ku, amma idan kun kwatanta fitowar umarnin da abin da ke cikin fayil ɗin za ku ga cewa duk maganganun sun ɓace.

A cikin wannan umarnin bayanin binciken shine «#.*", Wancan shine" # "wanda adadin haruffa ke biye dashi, ma'ana, tsokaci. Kuma kalmar sauyawa, idan ka kalli sanduna biyu a jere, za ka ga babu su, don haka abin da take yi shi ne maye gurbin maganganun da ba komai, watau share su. Mai sauki ba zai yiwu ba.

Yanzu zamuyi akasin haka. A ce abin da muke so shi ne yin sharhi a kan dukkan layukan fayil ɗin. Bari mu gwada kamar haka:

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

Za ku ga cewa, a cikin fitowar umarnin, duk layukan suna farawa da alamar zanta da kuma sarari mara kyau. Abin da muka yi shine maye gurbin farkon layi da «# «. Wannan shima misali ne mai sauki a inda rubutun da za'a maye gurbinsa iri daya ne, amma yanzu zamu kara dagula shi.

Alherin maye gurbin shine cewa a cikin maye gurbin magana zaku iya amfani da bayanan baya kamar wadanda na fada muku a da. Bari mu koma kan jumlar fayil ɗin da muka zazzage a farkon labarin. Za mu sanya a cikin maƙalar duk manyan haruffa waɗanda suke, amma za mu yi shi tare da umarni:

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

Abinda muke da shi anan shine baya baya a cikin maganar maye gurbin da ke nufin iyaye a cikin bayanin binciken. Parentaura a cikin maimaita magana magana ce ta yau da kullun. A cikin bayanin sauyawa ba su da wata ma'ana ta musamman, ana sanya su kamar yadda yake. Sakamakon haka shine cewa duk manyan haruffa an maye gurbinsu da wannan harafin iri ɗaya, duk abin da yake, tare da maƙalar kewayenta.

Akwai wani hali wanda shima za a iya amfani da shi a cikin maye gurbin magana, shi ne "&" kuma ana maye gurbinsa da duk rubutun da ya dace da kalmar bincike. Misali na wannan na iya sanya dukkan jimloli a cikin fayil ɗin a cikin ƙidodi. Ana iya cimma wannan tare da wannan umarnin:

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

Aikin wannan umarni yayi kamanceceniya da na baya, kawai yanzu abin da zamu maye gurbin shine dukkanin layi tare da layi ɗaya tare da maganganu a kusa dashi. Tunda muna amfani da "&", ba lallai ba ne a sanya magunguna.

Wasu umarni masu amfani tare da maganganu na yau da kullun

Anan ga wasu 'yan umarni waɗanda na ga suna da amfani ko sha'awa kuma suna amfani da maganganu na yau da kullun. Tare da waɗannan umarnin fa'idodin maganganun yau da kullun sun fi kyau fiye da misalan da na ba ku har yanzu, amma yana da mahimmanci a gare ni in bayyana wani abu game da yadda maganganun yau da kullun ke aiki don fahimtar su.

  • Nuna sassan shafin mutum:

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

Tabbas, zaku iya canza umarnin bash zuwa duk abin da kuke so. Sannan daga mutum, zaku iya zuwa kai tsaye zuwa ɓangaren da kuke sha'awar amfani da shi, ba shakka, magana ta yau da kullun. Ka latsa «/» don fara bincike da rubuta «^ALIASES$»Don zuwa sashen ALIASES, misali. Ina tsammanin wannan shine farkon amfani da na fara yin maganganu na yau da kullun fewan shekarun da suka gabata. Motsawa ta wasu shafukan littafin yana da matukar wahala ba tare da dabara irin wannan ba.

  • Nuna sunayen duk masu amfani da inji gami da na musamman:

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

  • Nuna sunayen mai amfani, amma waɗanda suke da harsashi kawai:

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

Da gaske ana iya yin sa tare da magana guda ɗaya na yau da kullun, amma hanyar yin shi ya wuce abin da na gaya muku a cikin waɗannan labaran, don haka na yi shi ta hanyar haɗa umarni biyu.

  • Saka wakafi kafin lambobi ukun karshe na dukkan lambobin a cikin fayil din lambobi:

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

Yana aiki ne kawai tare da lambobi har zuwa lambobi 6, amma ana iya ƙaddamar da su fiye da sau ɗaya don sanya masu rarrabu a cikin wasu rukuni na adadi uku.

  •  Cire duk adiresoshin imel daga fayil:

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

  • Ware rana, wata da shekara na duk ranakun da suka bayyana a cikin fayil:

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

  • Gano IP na gida:

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

Hakanan za'a iya yin hakan tare da umarnin sed guda ɗaya, amma na fi dacewa in raba shi a cikin mai-maiko da sed don sauƙi.

Wasu adiresoshin masu amfani

Ga wasu adiresoshin waɗanda zasu iya zama masu amfani masu alaƙa da maganganun yau da kullun:

  • Makarantar magana ta yau da kullun: Wannan ɗakin karatu ne na magana na yau da kullun wanda zaku iya bincika maganganun yau da kullun dangane da batun da kuke sha'awa. Don bincika adiresoshin yanar gizo, ID ko komai.
  • RegExr: Mai duba magana na yau da kullun akan layi. Yana ba ka damar shigar da rubutu ka yi amfani da magana ta yau da kullun zuwa gare shi ko dai bincika ko maye gurbin. Yana ba da bayani game da magana ta yau da kullun kuma kuna da 'yan zaɓuɓɓuka don canza halayenta.
  • Maganganun Magana na Yau da kullun: Addon ne don Firefox wanda zai baka damar duba maganganun yau da kullun daga mai binciken.

ƙarshe

A yanzu haka ke nan. Maganganu na yau da kullun suna da rikitarwa amma suna da amfani. Koyonsu yana ɗaukar lokaci, amma idan kun kasance kamar ni, wasa tare da su zai zama daɗi kuma, da kaɗan kaɗan za ku mallake su. Duniya ce gabaɗaya. Za a sami abubuwa da yawa da za a faɗi duk da haka, game da masu ƙididdigar lalaci, PERL-style regex, multiline, etc. Kuma sannan kowane shiri yana da halaye da nau'ikansa, don haka mafi kyawun nasihar da zan iya baku ita ce koda yaushe ku kalli takaddar shirin da kuke amfani da ita duk lokacin da zaku rubuta maganganun yau da kullun a cikin sabon shirin.

Kai! Y KYAU! KE KA FARKA! ALL MENENE DUK KUKE YI BACCI? 🙂

Fuentes

Wasu daga cikin ra'ayoyi da misalai don maganganu na yau da kullun a cikin wannan labarin na ɗauka daga nan:


15 comments, bar naka

Bar tsokaci

Your email address ba za a buga. Bukata filayen suna alama da *

*

*

  1. Wanda ke da alhakin bayanan: Miguel Ángel Gatón
  2. Manufar bayanan: Sarrafa SPAM, sarrafa sharhi.
  3. Halacci: Yarda da yarda
  4. Sadarwar bayanan: Ba za a sanar da wasu bayanan ga wasu kamfanoni ba sai ta hanyar wajibcin doka.
  5. Ajiye bayanai: Bayanin yanar gizo wanda Occentus Networks (EU) suka dauki nauyi
  6. Hakkoki: A kowane lokaci zaka iyakance, dawo da share bayanan ka.

  1.   kari m

    Masterly !!!

    1.    hexborg m

      Ba shi da kyau, amma na gode sosai. Fata mutane suna son shi. 🙂

      1.    Oscar m

        Ina son shi ha!

        1.    hexborg m

          To lallai ne nayi wani abu dai-dai. LOL !! 🙂

          Na gode kwarai da bayaninka.

          1.    Blaire fasal m

            Fuck ci gaba da rubuta mutum, ci gaba da shi.

          2.    hexborg m

            @Blaire Pascal: Sharhi kamar naka yana ƙarfafa shi. Na gode sosai !!

      2.    Garin m

        Ni ma na so shi ... godiya 🙂

        1.    hexborg m

          Na gode da sharhi. Ina fatan sake rubuta wasu morean. 🙂

  2.   mariano m

    Abubuwan da kuke sakawa suna da ban sha'awa, kuna koyan abubuwa da yawa, a'a, kuna koyan yin ayyuka cikin tsari mai kyau da inganci.

    Shin kun yi tunani game da tattara duk rubutun rubutun ku? An ware a cikin pdf zai ba da babban jagora.

    Yi murna da godiya sosai!

    1.    hexborg m

      Godiya mai yawa !! Ba mummunan ra'ayi bane. A halin yanzu biyu ne kawai, amma zan yi tunani game da shi daga baya. 🙂

  3.   Kiyov m

    labari mai kyau, 5+.

    1.    hexborg m

      Na gode. Ina farin ciki da kuna son shi. 🙂

  4.   Sebastian m

    Madalla! Ina buƙatar canza magana mai zuwa kuma ban san yadda zan yi ba:
    192.168.0.138/Server ta 192.168.0.111/data
    Matsalar ta ta'allaka ne da alamar "/".
    Ina amfani da umarnin:
    sami. -suna "* .txt" -exec sed -i 's / TEXT1 / TEXT2 / g' {} \;
    Abin da ake amfani da shi don aiwatar da irin wannan aikin ba tare da jinkiri ba, amma ba zan iya ...
    Shin wani ya san yadda zan yi shi?
    Sannu!
    Seba

    1.    hexborg m

      Abin da za ku yi shi ne guje wa halin kamar wannan:

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

      Hakanan zaka iya amfani da wani mai raba a cikin sed. Ba lallai bane ya zama mashaya. Sed yana ba da damar amfani da kowane hali. Misali, wannan zai fi bayyane:

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

      Kuma idan zaku kwafa da liƙa umarnin daga wannan tsokaci, ku yi hankali da alamun ambato, kalmar ta canza su don waɗanda suke rubutu. 🙂

      Na gode.

  5.   Sebastian m

    Madalla !!!!
    Na dade ina neman wannan maganin.
    Anan na bar cikakken umarnin da nayi amfani dashi

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

    Amfanin wannan umarnin shine ya canza duk fayilolin .txt (ko kuma kari da kuke so) akai-akai ... Dole ne ku mai da hankali!
    Amma yanada amfani sosai !!!

    Da kyau, godiya ga komai da kuma taya murna ga duka rukuni.
    Kullum ina karanta su daga wasiƙa!
    Ugsununi
    Seba