Le Críochfort: Úsáid Léirithe Rialta II: Athsholáthar

I Mise alt roimhe seo D'inis mé duit ar leibhéal bunúsach conas a oibríonn gach ceann de na carachtair speisialta is mó a úsáidtear le nathanna rialta. Leis na nathanna rialta seo is féidir cuardach casta a dhéanamh i gcomhaid téacs nó in aschur orduithe eile. San alt seo, beidh mé ag míniú conas an t-ordú sed a úsáid chun téacs a aimsiú agus a athsholáthar ar bhealach i bhfad níos cumhachtaí ná téacs amháin a athrú go ceann eile.

Beagán níos mó faoin ordú grep

Sula dtosaím ag caint faoi sed, ba mhaith liom trácht níos mó a dhéanamh ar an ordú grep chun an méid a míníodh san alt roimhe seo a chur i gcrích beagán. Beidh gach a mbeidh mé ag rá ábhartha don cheann seo freisin. Níos déanaí feicfimid an gaol idir seo agus cuardaigh.

Sloinn rialta a chur le chéile

Is féidir go leor de na carachtair speisialta ar labhair mé fúthu san alt roimhe seo a chomhcheangal, ní amháin le carachtair eile, ach le nathanna rialta iomlána. Is é an bealach chun é seo a dhéanamh lúibíní a úsáid chun subexpression a dhéanamh. Feicfimid sampla de seo. Tosaímid trí théacs a íoslódáil is féidir linn a úsáid le haghaidh tástála. Is liosta frásaí é. Chuige sin táimid chun an t-ordú seo a leanas a úsáid:

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

 Fágfaidh sé sin tú san eolaire ina lainseálfaidh tú comhad darb ainm «frásaí». Is féidir leat é a oscailt chun féachaint air agus gáire beag a dhéanamh. 🙂

Anois, is dóigh linn go dteastaíonn uainn na frásaí a bhfuil 6 fhocal go díreach iontu a fháil. Is é an deacracht slonn rialta a fhoirmiú a oireann do gach focal. Is éard atá i bhfocal seicheamh litreacha, uachtair nó litreacha beaga, rud a bheadh ​​cosúil le '[a-zA-Z]+', ach caithfidh tú a shonrú freisin go gcaithfear na litreacha seo a scaradh le carachtair eile seachas litreacha, is é sin, bheadh ​​sé cosúil le '[a-zA-Z]+[^a-zA-Z]+'. Cuimhnigh: léiríonn an "^" mar an chéad charachtar taobh istigh de na lúibíní gur mhaith linn meaitseáil le carachtair nach bhfuil sna raonta agus léiríonn an "+" 1 charachtar nó níos mó.

Tá slonn rialta againn cheana féin atá in ann focal a mheaitseáil. Chun é a phéireáil le 6, caithfear é a athdhéanamh 6 huaire. Chuige sin d’úsáidamar na heochracha, ach tá sé gan úsáid '[a-zA-Z]+[^a-zA-Z]+{6}', toisc go ndéanfadh an 6 an chuid dheireanach den slonn rialta a athdhéanamh agus an rud atá uainn ná é a athdhéanamh, mar sin is é atá le cur agat ná seo: '([a-zA-Z]+[^a-zA-Z]+){6}'. Leis na lúibíní cruthaímid subexpression agus leis na braces déanaimid arís é 6 huaire. Anois ní gá duit ach "^" a chur chun tosaigh agus "$" sa chúl chun an líne iomlán a mheaitseáil. Seo a leanas an t-ordú:

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

Agus is é an toradh ach an rud a theastaigh uainn:

Tá sé níos canta ná an Macarena. Tá tú níos críochnaithe ná Luis Aguilé. Tá níos lú cultúir agat ná cloch. Tá níos mó teangacha ar eolas agat ná Cañita Brava. Tá níos mó roic aige ná Tutan Khamón. Tá níos lú ná Rambo ar eolas agat faoi chúram leanaí.

Tabhair faoi deara go gcuirimid an paraiméadar -E toisc go dteastaíonn uainn nathanna rialta fadaithe a úsáid chun go n-oibreoidh an "+". Dá n-úsáidfimid na cinn bhunúsacha, bheadh ​​orainn éalú ó na lúibíní agus na braces.

Tagairtí ar ais nó cúltacaí

Má tá seiceálaí litrithe suiteáilte agat, is dócha go mbeidh liosta focal agat /usr/share/dict/words. Mura féidir, is féidir leat é a shuiteáil san áirse le:

sudo pacman -S words

Nó i debian le:

sudo aptitude install dictionaries-common

Más mian leat is féidir leat féachaint ar an gcomhad chun na focail atá aige a fheiceáil. I ndáiríre is nasc é le comhad focal na teanga ina bhfuil do distro. Is féidir leat roinnt comhad focal a shuiteáil ag an am céanna.

Táimid chun an comhad sin a úsáid. Tharlaíonn sé go bhfuil muid an-aisteach a bheith ar an eolas faoi na seacht palindromes litreacha amuigh ansin. Dóibh siúd nach bhfuil a fhios acu: Is focal capicúa é palindrome, is é sin, is féidir é a léamh ó chlé go deas chomh maith le ó dheis go clé. Déanaimis iarracht an t-ordú seo a leanas:

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

Breathnaíonn sé rud beag aisteach, ceart? Má dhéanaimid iarracht é, beidh an toradh ag brath ar theanga do distro agus ar na focail atá ar do liosta, ach i mo chás, leis an Spáinnis, is é an toradh atá air seo:

rollta anilín anilín

A ligean ar a fheiceáil conas a oibríonn an léiriú rialta.

Seachas an "^" agus an "$", a bhfuil a fhios againn cheana féin cad chuige é, is é an chéad rud a fheicimid ar chlé ná trí ghrúpa pointí atá iata i lúibíní. Ná bíodh mearbhall ort leis na barraí os comhair gach lúibín. Tá siad chun éalú ó na lúibíní toisc go bhfuil nathanna bunúsacha rialta á n-úsáid againn, ach níl aon bhrí eile leo. Is é an rud tábhachtach ná go bhfuilimid ag iarraidh trí charachtar ar bith leis na poncanna, ach tá gach ceann de na poncanna sin iata i lúibíní. Déantar é seo chun na carachtair a mheaitseálann na pointí sin a shábháil ionas gur féidir tagairt a dhéanamh dóibh arís ón slonn rialta. Seo úsáid eile as lúibíní a thiocfaidh an-úsáideach níos déanaí agus iad ag athsholáthar.

Seo an áit a dtagann na trí uimhir thíos leis an slais os a gcomhair. Sa chás seo, tá an barra tábhachtach. Úsáidtear é chun a léiriú gur cúl-tagairt í an uimhir thíos agus go bhfuil sí ag tagairt do cheann de na lúibíní roimhe seo. Mar shampla: tagraíonn \ 1 don chéad lúibín, \ 2 go dtí an dara ceann, agus mar sin de.

Is é sin, leis an léiriú rialta a chuireamar, is é atá á lorg againn ná na focail go léir a thosaíonn le ceithre litir ar bith agus ansin litir a bheith acu atá mar an gcéanna leis an tríú ceann, ceann eile atá mar an gcéanna leis an dara ceann agus ceann eile is ionann é sin agus an chéad cheann. Is é an toradh atá air ná na palindromes seacht litir atá ar an liosta focal. Díreach mar a theastaigh uainn.

Dá mbeimis ag úsáid nathanna rialta fada, ní bheadh ​​orainn éalú ó na lúibíní, ach le habairtí rialta rialta ní oibríonn cúltacaí i ngach clár toisc nach bhfuil siad caighdeánaithe. Mar sin féin, le grep oibríonn siad, mar sin b’fhéidir gur bealach eile é sin chun an rud céanna a dhéanamh. Is féidir leat triail a bhaint más mian leat.

Nathanna athsholáthair: an t-ordú sed

Chomh maith le cuardach, is é ceann de na húsáidí is fearr a bhaineann le nathanna rialta ná téacsanna casta a athsholáthar. Chun seo a dhéanamh, bealach amháin chun é a dhéanamh ná leis an ordú sed. Téann cumhacht an ordaithe sed i bhfad níos faide ná téacsanna a athsholáthar, ach anseo táim chun é a úsáid chuige sin. Seo a leanas an chomhréir atá mé ag úsáid leis an ordú seo:

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

Nó freisin:

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

Áit a mbeidh REGEX mar an abairt rialta cuardaigh agus REPL an ceann athsholáthair. Coinnigh i gcuimhne nach dtagann an t-ordú seo in áit aon rud sa chomhad a léirímid i ndáiríre, ach is é an rud a dhéanann sé ná toradh an athsholáthair sa chríochfort a thaispeáint dúinn, mar sin ná bíodh eagla ort roimh na horduithe atá mé ag dul a chur ina dhiaidh sin. Níl aon cheann acu chun aon chomhaid ar do chóras a mhodhnú.

Tosaímid le sampla simplí. Tá comhaid chumraíochta éagsúla againn go léir san eolaire / srl a mbíonn tráchtanna de ghnáth ag tosú le "#". Cuir i gcás gur mhaith linn ceann de na comhaid seo a fheiceáil gan na tuairimí. Mar shampla, táim chun é a dhéanamh leis an fstab. Is féidir leat triail a bhaint as an gceann atá uait.

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

Nílim chun toradh an ordaithe a chur anseo toisc go mbraitheann sé ar a bhfuil agat i do fstab, ach má dhéanann tú comparáid idir aschur an ordaithe agus ábhar an chomhaid feicfidh tú go bhfuil na tráchtanna go léir imithe.

San ordú seo is é an abairt cuardaigh «#.*", Is é sin" # "agus líon ar bith de charachtair ina dhiaidh sin, is é sin, na tráchtanna. Agus an abairt athsholáthair, má fhéachann tú ar an dá bharra i ndiaidh a chéile, feicfidh tú nach bhfuil aon cheann ann, mar sin is é atá á dhéanamh aige ná rud ar bith a chur in ionad na dtuairimí, is é sin, iad a scriosadh. Níos simplí dodhéanta.

Anois táimid chun a mhalairt a dhéanamh. Má ghlactar leis gurb é atá uainn trácht a dhéanamh ar línte uile an chomhaid. Déanaimis iarracht mar seo:

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

Feicfidh tú, in aschur an ordaithe, go dtosaíonn na línte go léir le marc hash agus spás bán. Is é atá déanta againn ná «tús na líne a chur in ionad«# «. Is sampla measartha simplí é seo freisin nuair a bhíonn an téacs atá le hathsholáthar mar an gcéanna i gcónaí, ach anois táimid chun é a dhéanamh níos casta.

Is é grásta na n-athsholáthar gur féidir leat, sa slonn athsholáthair, cúltacaí a úsáid cosúil leis na cinn a dúirt mé leat roimhe seo. Téigh ar ais chuig an gcomhad frásaí a d’íoslódáil muid ag tús an ailt. Táimid chun na príomhlitreacha go léir atá ann a chur i lúibíní, ach déanfaimid iad le hordú:

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

Is é atá againn anseo ach cúlra san abairt athsholáthair a thagraíonn do na lúibíní san abairt cuardaigh. Is gnáth-lúibíní iad na lúibíní san abairt athsholáthair. San abairt athsholáthair níl aon bhrí speisialta leo, cuirtear iad mar atá. Is é an toradh atá air seo go gcuirtear lúibíní timpeall uirthi in ionad na príomhlitreach sin, cibé scéal é.

Tá carachtar eile ann is féidir a úsáid san abairt athsholáthair, is é "&" é agus cuirtear an téacs go léir a mheaitseálann an slonn cuardaigh leis. Sampla de seo is ea na frásaí go léir sa chomhad a chur i luachana. Is féidir é seo a bhaint amach leis an ordú seo:

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

Tá oibriú an ordaithe seo an-chosúil leis an gceann roimhe seo, ach anois is é an líne iomlán leis an líne chéanna sin le Sleachta timpeall air. Ós rud é go bhfuil "&" á ​​úsáid againn, ní gá lúibíní a chur.

Roinnt orduithe úsáideacha le nathanna rialta

Seo cúpla ordú a mheasaim atá úsáideach nó aisteach agus a úsáideann nathanna rialta. Leis na horduithe seo tá fóntais nathanna rialta i bhfad níos fearr ná leis na samplaí a thug mé go dtí seo, ach ba chosúil go raibh sé tábhachtach dom rud éigin a mhíniú faoin gcaoi a n-oibríonn nathanna rialta d’fhonn iad a thuiscint.

  • Taispeáin codanna de leathanach fear:

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

Ar ndóigh, is féidir leat an t-ordú bash a athrú go cibé rud is mian leat. Agus ansin ó fhear, is féidir leat dul go díreach chuig an gcuid a bhfuil spéis agat a úsáid, ar ndóigh, slonn rialta. Brúnn tú «/» chun tosú ag cuardach agus ag scríobh «^ALIASES$»Chun dul go dtí an roinn ALIASES, mar shampla. Sílim gurb é seo an chéad úsáid a thosaigh mé ag déanamh nathanna rialta cúpla bliain ó shin. Tá sé beagnach dodhéanta bogadh trí roinnt leathanaigh den lámhleabhar gan cleas mar seo.

  • Taispeáin ainmneacha úsáideoirí uile an mheaisín lena n-áirítear ainmneacha speisialta:

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

  • Taispeáin ainmneacha úsáideora, ach iad siúd a bhfuil blaosc amháin acu:

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

Is féidir é a dhéanamh i ndáiríre le slonn rialta amháin, ach téann an bealach chun é a dhéanamh níos faide ná mar a dúirt mé leat sna hailt seo, mar sin rinne mé é trí dhá ordú a chur le chéile.

  • Cuir camóg isteach roimh na trí dhigit dheireanacha de na huimhreacha go léir sa chomhad uimhreacha:

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

Ní oibríonn sé ach le huimhreacha suas le 6 dhigit, ach is féidir glaoch air níos mó ná uair amháin chun deighilteoirí a chur sna grúpaí eile de thrí dhigit.

  •  Sliocht gach seoladh ríomhphoist ó chomhad:

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

  • Deighil lá, mí agus bliain na ndátaí uile atá le feiceáil i gcomhad:

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

  • Faigh amach ár IP áitiúil:

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

Is féidir é seo a dhéanamh freisin le hordú sed amháin, ach is fearr mé a dheighilt i grep agus sed ar mhaithe le simplíocht.

Roinnt seoltaí úsáideacha

Seo roinnt seoltaí a d’fhéadfadh a bheith úsáideach a bhaineann le nathanna rialta:

  • Leabharlann léirithe rialta: Is leabharlann nathanna rialta í seo inar féidir leat nathanna rialta a bhaineann leis an topaic a bhfuil spéis agat ann a chuardach. Chun seoltaí gréasáin, ID nó cibé rud a chuardach.
  • RegExr: Seiceálaí slonn rialta ar líne. Ligeann sé duit téacs a iontráil agus slonn rialta a chur i bhfeidhm air nó é a chuardach nó a athsholáthar. Tugann sé faisnéis faoin slonn rialta agus tá cúpla rogha agat chun a iompar a athrú.
  • Tástálaí Sloinn Rialta: Is breiseán é le haghaidh firefox a cheadaíonn nathanna rialta ón mbrabhsálaí a sheiceáil.

Conclúid

Faoi láthair sin uile. Tá nathanna rialta casta ach úsáideach. Tógann sé tamall iad a fhoghlaim, ach má tá tú cosúil liomsa, beidh an-spraoi ag imirt leo agus, beag ar bheag beidh tú ag máistreacht orthu. Is domhan iomlán é. Tá go leor le rá fós faoi chainníochtóirí leisciúla, regex i stíl PERL, ililín, srl. Agus ansin tá a shaintréithe agus a leaganacha ag gach clár, mar sin is í an chomhairle is fearr is féidir liom a thabhairt duit féachaint i gcónaí ar dhoiciméadú an chláir a bhíonn á úsáid agat gach uair a bhíonn ort slonn rialta a scríobh i gclár nua.

Hey! … HEY! … DÚISIGH! ... CÉN UAIR A BHFUIL TÚ GACH CEANN DE BHRÍ? 🙂

Fuentes

Thóg mé anseo cuid de na smaointe agus na samplaí le haghaidh nathanna rialta san alt seo:


Cloíonn ábhar an ailt lenár bprionsabail eitic eagarthóireachta. Chun earráid a thuairisciú cliceáil anseo.

15 trácht, fág mise

Fág do thrácht

Ní thabharfar do sheoladh r-phoist a fhoilsiú.

*

*

  1. Freagrach as na sonraí: Miguel Ángel Gatón
  2. Cuspóir na sonraí: SPAM a rialú, bainistíocht trácht.
  3. Legitimation: Do thoiliú
  4. Na sonraí a chur in iúl: Ní chuirfear na sonraí in iúl do thríú páirtithe ach amháin trí oibleagáid dhlíthiúil.
  5. Stóráil sonraí: Bunachar sonraí arna óstáil ag Occentus Networks (EU)
  6. Cearta: Tráth ar bith is féidir leat do chuid faisnéise a theorannú, a aisghabháil agus a scriosadh.

  1.   elav a dúirt

    Máistir !!!

    1.    heicsbhorg a dúirt

      Níl sé chomh dona, ach go raibh míle maith agat. Tá súil agam gur maith le daoine é. 🙂

      1.    Oscar a dúirt

        Is maith liom é ha!

        1.    heicsbhorg a dúirt

          Ansin caithfidh go bhfuil rud éigin ceart déanta agam. LOL!! 🙂

          Go raibh míle maith agat as do thrácht.

          1.    Pascal Blaire a dúirt

            Fuck coinnigh ort ag scríobh fear, coinnigh suas é.

          2.    heicsbhorg a dúirt

            @Blaire Pascal: Spreagann tuairimí mar mise é. 🙂 Go raibh míle maith agat !!

      2.    Citux a dúirt

        Thaitin sé liom freisin ... go raibh maith agat 🙂

        1.    heicsbhorg a dúirt

          Go raibh maith agat as trácht. Tá súil agam cúpla ceann eile a scríobh. 🙂

  2.   Marian a dúirt

    Tá do phoist iontach, foghlaimíonn tú go leor, ach foghlaimíonn tú tascanna a dhéanamh ar bhealach galánta agus éifeachtúil.

    Ar smaoinigh tú ar do phoist script bhlaosc go léir a bhailiú? Dhéanfadh sórtáil i pdf lámhleabhar iontach.

    Cheers up agus go raibh míle maith agat!

    1.    heicsbhorg a dúirt

      Go raibh míle maith agat!! Ní droch-smaoineamh é. I láthair na huaire níl ach beirt ann, ach smaoineoidh mé air níos déanaí. 🙂

  3.   Kiev a dúirt

    alt an-mhaith, 5+.

    1.    heicsbhorg a dúirt

      Go raibh maith agat. Tá áthas orm gur maith leat é. 🙂

  4.   Sebastian a dúirt

    Ar fheabhas! Caithfidh mé an slonn seo a leanas a athrú agus níl a fhios agam conas é a dhéanamh:
    192.168.0.138/Server faoi 192.168.0.111/data
    Tá an fhadhb sa tsiombail "/".
    Tá an t-ordú á úsáid agam:
    aimsigh. -ainm "* .txt" -exec sed -i 's / TEXT1 / TEXT2 / g' {} \;
    Cad a úsáidtear chun an cineál seo tasc a dhéanamh go faillíoch, ach ní féidir liom ...
    An bhfuil a fhios ag aon duine conas ba chóir dom é a dhéanamh?
    Hug!
    Seba

    1.    heicsbhorg a dúirt

      Is é atá le déanamh agat éalú ón gcarachtar mar seo:

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

      Is féidir leat deighilteoir eile a úsáid i sed freisin. Ní gá gur barra é. Ligeann Sed carachtar ar bith a úsáid. Mar shampla, bheadh ​​sé seo níos soiléire:

      aimsigh. -ainm "* .txt" -exec sed -i 's | / Freastalaí | / sonraí | g' {} \;

      Agus má tá tú chun na horduithe ón trácht seo a chóipeáil agus a ghreamú, bí cúramach leis na comharthaí athfhriotail, athraíonn an wordpress sin iad do na cinn clóghrafaíochta. 🙂

      Beannachtaí.

  5.   Sebastian a dúirt

    Ar fheabhas !!!!
    Táim ag lorg an réitigh seo le fada an lá.
    Fágaim anseo an t-ordú iomlán a d'úsáid mé

    aimsigh. -ainm "* .txt" -exec sed -i 's | 192 \ .168 \ .0 \ .238 \ / Freastalaí | 192 \ .168 \ .0 \ .111 \ / data | g' {} \;

    Is é buntáiste an ordaithe seo ná go n-athraíonn sé na comhaid .txt go léir (nó an síneadh atá uait) go hathchúrsach ... Caithfidh tú a bheith an-chúramach!
    Ach tá sé an-úsáideach !!!

    Bhuel, buíochas as gach rud agus míle comhghairdeas leis an ngrúpa ar fad.
    Léigh mé iad ón bpost i gcónaí!
    Hugs
    Seba

bool (fíor)