egrep: GNU / Linux માં આદેશનાં ઉદાહરણો

દા.ત.

grep તે જીએનયુ / લિનક્સ કમાન્ડ લાઇન પરના સૌથી વધુ વપરાયેલ ટૂલ્સમાંનું એક છે. ખૂબ સરળ સાધન હોવા છતાં, તે તમને મોટી સંખ્યામાં કામગીરી કરવાની મંજૂરી આપે છે. અગાઉના આદેશ, વગેરેના આઉટપુટમાં વિશિષ્ટ બિંદુઓ શોધવા માટે સક્ષમ થવા માટે, પાઈપો સાથે ખાસ કરીને તેનો ઉપયોગ થાય છે. પરંતુ ત્યાં એક ટૂલ પણ છે જે એ.એસ.આર.પી. તરીકે ઓળખાય છે જે -E વિકલ્પ સાથે ગ્રેપ ચલાવવા સમાન છે.

ઇ "એક્સ્ટેંડેડ રેજેક્સ" માંથી આવે છે, જે તે છે જે -E વિકલ્પને સક્રિય કરે છે અને તે વિકલ્પનો ઉપયોગ કર્યા વિના તમે મૂળભૂત રીતે દા.ત. તે છે, તમે ઉપયોગ કરી શકો છો વિસ્તૃત નિયમિત અભિવ્યક્તિઓ. આ ટ્યુટોરીયલમાં હું સમજાવું નહીં કે નિયમિત અભિવ્યક્તિઓ શું છે, તેઓ કેવી રીતે વાપરી શકાય છે અને કયા પ્રકારો * નિક્સમાં છે. હું હમણાં જ કેટલીક ઉપયોગી વસ્તુઓના વ્યવહારિક ઉદાહરણો બતાવીશ જે તમે દા.ત.

grep, egrep, અને fgrep સમાન છે. હકીકતમાં, egrep એ ગ્રેપ-ઇ ની સમકક્ષ છે અને fgrep એ grep -F ની સમકક્ષ છે. એટલે કે, જે બાબતમાં આપણી ચિંતા થાય છે, તે દાખલાઓને નિયમિત અભિવ્યક્તિ તરીકે પણ સમજાવશે.

તમે કરી શકો છો કોઈ વાક્ય અથવા શબ્દ માટે શોધ કરો એક અથવા વધુ ફાઇલોમાં, જેમ કે ગ્રેપ સાથે પણ છે. ઉદાહરણ તરીકે, કલ્પના કરો કે તમે snap.txt નામની ફાઇલમાં અને વર્તમાન ડિરેક્ટરીમાંની તમામ .txt ફાઇલોમાં ઉબુન્ટુ શબ્દ શોધવા માંગતા હો:

egrep ubuntu snap.txt

egrep ubuntu *.txt

શોધ પણ હોઈ શકે છે પુનરાવર્તિત વર્તમાન ડિરેક્ટરીની સંપૂર્ણ સામગ્રીને શોધવા માટે:

egrep -r "hola mundo" *

અત્યાર સુધી, ચોક્કસ શબ્દો અથવા શબ્દમાળાઓ શોધવામાં આવી હતી, એટલે કે, અપર અને લોઅર કેસ (કેસ-સેન્સેટિવ) ને ધ્યાનમાં લેતા, પરંતુ જો તમે તેને કેસ-સંવેદનશીલ સ્થિતિમાં કરવા માંગતા હો, પછી ભલે તે અપરકેસ અથવા લોઅરકેસ હોય, તમે નીચેનાનો ઉપયોગ કરી શકો છો (જો તમે w ઉમેરશો તો તેને ફક્ત સંપૂર્ણ મેળ મળે છે):

egrep -i "ejemplo" documento.txt

egrep -iw "ejemplo" documento.txt

સંયોગો નહીં, બતાવો, પણ ફાઇલનામો જ્યાં તે મેચ જોવા મળી હતી:

egrep -l hola *.txt

ફક્ત પેટર્ન અથવા શબ્દ બતાવો દસ્તાવેજમાં શોધાયેલ:

egrep -o printf hola.c

યાદ રાખો કે તમે કલ્પના કરી શકો તેવી બધી શક્યતાઓનો ઉપયોગ કરી શકો છો. તમે પહેલા જોયેલા ઘણા વિકલ્પોને જોડી શકો છો, અથવા તમે તેમને અન્ય વિકલ્પો જેમ કે -A n અને -B n સાથે પૂરક બનાવી શકો છો, જ્યાં n તમે પહેલાં (પહેલાં) અને પછી (પછી) બતાવવા માંગો છો તે લીટીઓની સંખ્યા મેચ અથવા બંને એક જ સમયે (સી), જેથી તમે જોઈ શકો કે મેચ શું આસપાસ છે:

egrep -A 2 "printf" hola.c

egrep -B 2 "printf" hola.c

egrep -C 2 printf hola.c

રેખાઓને દબાવો કે જેમાં મેચ હોય અને ફક્ત તે જ બતાવો જે મેચ ન કરે:

egrep -v "dos" números.doc

અથવા જો તમે પસંદ કરો છો, તો તમે ઉપયોગ કરી શકો છો બહુવિધ શબ્દો અથવા -e સાથે મેળ ખાય છે. ઉદાહરણ તરીકે:

egrep -v -e "uno" -e "dos" -e "tres" números.txt

જો તમે ઉપયોગ કરો છો -c ફક્ત મેચની સંખ્યા ગણી શકે છે, અથવા મેળ ખાતી રેખાઓની સંખ્યા બતાવવા માટે તેને -v સાથે vertંધું કરવું. દાખ્લા તરીકે:

egrep -c "include" main.c

egrep -v -c "include" main.c

પણ લાઇન નંબર બતાવો જ્યાં મેચ થઈ છે અને તે અનુક્રમે પણ કબજે કરેલી સ્થિતિ:

egrep -n "void" hola.c

egrep -o -b "printf" hola.c

અને સાથે નિયમિત અભિવ્યક્તિઓ તેની ક્ષમતાઓ વિસ્તૃત કરી શકાય છે. ઉદાહરણ તરીકે, એક લાઇન શોધો જે હેલોથી શરૂ થાય છે અને બાય સાથે સમાપ્ત થાય છે, અથવા તે હેલો સાથે શરૂ થાય છે ત્યારબાદ જે પણ થાય છે અને પછી મેચ બાય અનુક્રમે દેખાય છે:

* નીચેના આદેશની સુધારણા: એક ભૂલ હોવાના કારણે, મેનુઅલ એલ્કોસર વાચકની ટિપ્પણી બદલ આભાર.

egrep '^Hola.*adiós$' ejemplo.txt

egrep "Hola.*adiós" ejemplo.txt

પરંતુ જો તમને ગ્રેપ સાથેના તફાવત વિશે આશ્ચર્ય થાય છે, તો અહીં એક ઉદાહરણ છે જે તમને તે સ્પષ્ટ કરશે ... ગ્રીપનો ઉપયોગ કર્યા વિના -ઇ, તમારે આનો ઉપયોગ કરવો જોઈએ એસ્કેપ સિક્વન્સ જેથી તે વિશિષ્ટ પાત્રોનું આવા અર્થઘટન કરે, અન્યથા તે પેટર્નનો તેમને ધ્યાનમાં લીધા વિના અર્થઘટન કરશે. બીજી બાજુ, એ.આર.પી.આર.પી. અથવા ગ્રેપ -E સાથે, તે તેમને ધ્યાનમાં લેશે. દાખ્લા તરીકે:
grep '^no\(fork\|group\)' /etc/group

તે સમકક્ષ હશે:

grep -E '^no(fork|group)' /etc/group
egrep '^no(fork|group)' /etc/group

તે છે, તે નોફોર્ક અથવા નોગ્રુપથી શરૂ થતી મેચિંગ લાઇનો શોધશે. પરંતુ જો તમે એસ્કેપ સિક્વન્સ વિના ગ્રીપની પ્રથમ અભિવ્યક્તિનો ઉપયોગ કરો છો, તો તે શું કરે છે તે શોધ છે કોંક્રિટ પેટર્ન ના (કાંટો | જૂથ):

grep 'no(fork|group)' /etc/group

તમે પણ શોધી શકો છો આલ્ફાન્યુમેરિક રેન્જ, અથવા વિશિષ્ટ મૂલ્યો, જેમ કે અમુક આઇપી સ્થિત કરવા માટે:
cat /etc/networks | egrep "192.168.1.[5-9]"
cat /etc/networks | egrep "192.168.[1-3].[5-9]"
cat /etc/networks | egrep "192.168.1.[0-3]|[5-9]"
egrep 192.168.4.[10,40] networks

જો તમે પસંદ કરો છો, તો તમે વધુ વિશિષ્ટ શોધ કરવા માટે અન્ય નિયમિત અભિવ્યક્તિઓનો ઉપયોગ કરી શકો છો. ઉદાહરણ તરીકે | એક શોધવા માટે સંયોગ અથવા અન્ય:

egrep -i '^(printf|scanf)' hola.c

તમે પણ શોધી શકો છો અપરકેસ, લોઅરકેસ, ફક્ત મૂળાક્ષરોના અક્ષરો અથવા મૂળાક્ષરો, વગેરે., જેવા અન્ય અભિવ્યક્તિઓનો ઉપયોગ કરીને: [: અલમમ:], [: આલ્ફા:], [: અંક:], [: નીચલા:], [: પ્રિન્ટ:], [: પંકટ]], [: અવકાશ:], [ : ઉપલા:], વગેરે. ઉદાહરણ તરીકે, અપરકેસ શોધવા માટે:
egrep [[:upper:]] diccioario

હું આશા રાખું છું કે તે તમને મદદ કરે છે ... ટૂંક સમયમાં હું તેના માટે ખાસ સમર્પિત લેખમાં નિયમિત અભિવ્યક્તિઓ સમજાવું ...


5 ટિપ્પણીઓ, તમારી છોડી દો

તમારી ટિપ્પણી મૂકો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. આવશ્યક ક્ષેત્રો સાથે ચિહ્નિત થયેલ છે *

*

*

  1. ડેટા માટે જવાબદાર: મિગ્યુએલ gelંજેલ ગેટóન
  2. ડેટાનો હેતુ: નિયંત્રણ સ્પામ, ટિપ્પણી સંચાલન.
  3. કાયદો: તમારી સંમતિ
  4. ડેટાની વાતચીત: કાયદાકીય જવાબદારી સિવાય ડેટા તૃતીય પક્ષને આપવામાં આવશે નહીં.
  5. ડેટા સ્ટોરેજ: cસેન્ટસ નેટવર્ક્સ (ઇયુ) દ્વારા હોસ્ટ કરેલો ડેટાબેઝ
  6. અધિકાર: કોઈપણ સમયે તમે તમારી માહિતીને મર્યાદિત, પુન recoverપ્રાપ્ત અને કા deleteી શકો છો.

  1.   મેન્યુઅલ એલ્કોસર જણાવ્યું હતું કે

    શુભ બપોર

    થોડી ટિપ્પણીઓ ...

    તમે 'egrep' આદેશ સમજાવો છો, પરંતુ 'egrep' અને 'grep' વચ્ચેનો તફાવત નાખો, જે અહીં છે તે હોવું જોઈએ.

    ઉદાહરણ તરીકે:
    ગ્રેપ સાથે: આઈપી -4 એ | ગ્રેપ '[0-9] \ +'
    Egrep સાથે: આઈપી -4 એ | egrep '[0-9] +'

    આહ, અને આ ખોટું છે, 'egrep "હેલો. * બાય" ઉદાહરણ.txt'; અહીં સફળતા ત્યારે થાય છે જ્યારે ફાઇલમાં લાઇન હોય જેમાં 'હેલો' શબ્દમાળા હોય અને ત્યારબાદ 'ગુડબાય' અનુસરે, લીટી ખરેખર શરૂ થઈ શકે અને જે કંઇ સાથે સમાપ્ત થઈ શકે.

    આ લેખ શું કહે છે તે આ હશે:
    egrep '^ હેલો. * બાય $' ઉદાહરણ.txt

    અને બધા વિકલ્પો, અથવા લગભગ બધા (હું તેને તપાસવાનું બંધ કરતો નથી), એ 'ગ્રેપ' ના વિકલ્પ છે, ફક્ત 'એરેપ' ના નહીં.

    શ્રેષ્ઠ સન્માન

    1.    આઇઝેક જણાવ્યું હતું કે

      તે ભૂલની જાણ કરવા બદલ આભાર. તમે નિયમિત અભિવ્યક્તિઓ પર જે ટિપ્પણી કરો છો, તે પહેલાથી જ મેં બીજા ફકરામાં મૂકી દીધું છે. હું તેમને એક વિશિષ્ટ લેખ સમર્પિત કરીશ, કારણ કે ઘણા બધા છે અને આ લેખ ખૂબ લાંબો સમય લેશે. અભિવાદન!

      1.    મેન્યુઅલ એલ્કોસર જણાવ્યું હતું કે

        હેલો ફરીથી, આઇઝેક.

        બીજા ફકરામાં તમે મૂળભૂત રીતે કહો કે કહેવું જોઈએ કે 'એગ્રીપ' એ 'ગ્રેપ-ઇ' નો ઉપનામ છે, પરંતુ તમે 'એગ્રેપ' નો ઉપયોગ કેટલાક નિયમિત અભિવ્યક્તિ સાથે કરતા નથી જે જુદા જુદા લખાયેલા હોય ત્યારે 'grep' દ્વારા વપરાયેલ છે.

        વિસ્તૃત નિયમિત અભિવ્યક્તિઓને સમજાવવા માટે કોઈ લેખ સમર્પણ કરવું, મને અન્ય બાબતોમાં પણ હિંમતજનક લાગે છે કારણ કે આવી સાઇટ્સ એવી છે કે જે GNU સમુદાય માટે જાહેરાત આપતી નથી અને ખૂબ જ મહત્વપૂર્ણ માહિતીત્મક કાર્ય કરી રહી છે: https://www.rexegg.com/

        હું અહીં ટ્રોલિંગ માટે નથી લખી રહ્યો, આ બધા સાથેનો મારો હેતુ એ છે કે જો કોઈ 'એન્ટ્રે' અથવા 'ગ્રીપ' શું કરે છે તે જોવા માટે આ પ્રવેશ વાંચે છે, તો કૃપા કરીને અન્ય સ્રોતો જુઓ, આ પ્રવેશ કંઈપણનો સંદર્ભ હોઈ શકતી નથી, તે સમજાવે છે. થોડું, ખરાબ રીતે, અનાવશ્યક માહિતી પ્રદાન કરે છે અને મૂંઝવણકારક હોઈ શકે છે, ખાસ કરીને જેમને જીએનયુ અને તે પ્રદાન કરે છે તે શક્તિશાળી સાધનો વિશે કોઈ જાણકારી નથી.

        છેવટે, તમે મારી પ્રથમ ટિપ્પણી (^ $) પછી સૂચવેલા ભૂલને ઉમેરી અને ઠીક કરી છે. અન્ય સાઇટ્સની જેમ, તમારે તે વ્યક્તિને ટાંકવું જોઈએ જેણે સુધારો કર્યો હતો, અથવા ઓછામાં ઓછું કહેવું જોઈએ કે તે એક સુધારણા છે, તે જી.એન.યુ. બેઝનો એક ભાગ છે, તે જ આધાર જેની સાથે આ બ્લોગ શરૂ થયો હતો અને તે ખોવાઈ ગયો છે.

        આભાર.

        1.    આઇઝેક જણાવ્યું હતું કે

          તમારા દૃષ્ટિકોણ બદલ આભાર.

  2.   fsafs જણાવ્યું હતું કે

    ffff