પરિચય
લિનક્સ grep કમાન્ડ ફિલ્ટરિંગ ઇનપુટ માટે પદ્ધતિ તરીકે ઉપયોગમાં લેવાય છે.
જીઆરઈપી (GREP) ગ્લોબલ રેગ્યુલર એક્સપ્રેશન પ્રિન્ટર માટે વપરાય છે અને તેથી તે અસરકારક રીતે ઉપયોગ કરવા માટે, તમારે રેગ્યુલર સમીકરણો વિશે થોડું જ્ઞાન હોવું જોઈએ.
આ લેખમાં, હું તમને ઘણા ઉદાહરણો બતાવીશ જે તમને grep કમાન્ડને સમજવામાં મદદ કરશે.
09 ના 01
GREP નો ઉપયોગ કરીને ફાઇલમાં શબ્દમાળા માટે કેવી રીતે શોધવું
કલ્પના કરો કે તમારી પાસે નીચેના બાળકોના પુસ્તક શીર્ષકો સાથે પુસ્તકો તરીકેની એક ટેક્સ્ટ ફાઇલ છે:
- રોબિન હૂડ
- થોડા લાલ હૂડના ઘોડાની સવારી
- પીટર પાન
- ગોલ્ડિલક્સ અને થ્રી રીંછ
- સ્નો વ્હાઇટ અને સાત દ્વાર્ફ
- પિનકોચિયો
- હેટ માં કેટ
- ધ થ્રી લિટલ પિગ્સ
- ગ્રેફાલો
- ચાર્લી અને ધી ચોકલેટ ફેક્ટરી
શીર્ષકમાં "ધ" શબ્દ સાથેની તમામ પુસ્તકો શોધવા માટે તમે નીચેની વાક્યરચનાનો ઉપયોગ કરશો:
grep પુસ્તકો
નીચેના પરિણામો પરત કરવામાં આવશે:
- ગોલ્ડિલક્સ અને થ્રી રીંછ
- સ્નો વ્હાઇટ અને સાત દ્વાર્ફ
- હેટ માં કેટ
- ધ થ્રી લિટલ પિગ્સ
- ગ્રેફાલો
- ચાર્લી અને ધી ચોકલેટ ફેક્ટરી
દરેક કિસ્સામાં, "ધ" શબ્દ પ્રકાશિત કરવામાં આવશે.
નોંધ કરો કે શોધ એ કેસ પ્રત્યે સંવેદનશીલ હોય છે, જો ટાઇટલમાંના કોઈ એક "ધ" ને બદલે "ધ" હોય તો તે પાછો ફર્યા ન હોત.
કેસને અવગણવા માટે તમે નીચેની સ્વીચ ઉમેરી શકો છો:
પુસ્તકોને છાપો --ignore-case
નીચે પ્રમાણે તમે -i સ્વીચનો પણ ઉપયોગ કરી શકો છો:
grep-i પુસ્તકો
09 નો 02
વાઇલ્ડકાર્ડ્સ મદદથી ફાઇલમાં શબ્દમાળા માટે શોધો
Grep આદેશ ખૂબ શક્તિશાળી છે. પરિણામોને ફિલ્ટર કરવા માટે તમે તકનીકી મેળવણી પદ્ધતિઓની સંખ્યાબંધ ઉપયોગ કરી શકો છો.
આ ઉદાહરણમાં, હું તમને બતાવીશ કે વાઇલ્ડકાર્ડ્સનો ઉપયોગ કરીને ફાઇલમાં સ્ટ્રિંગ કેવી રીતે શોધવી.
કલ્પના કરો કે તમારી પાસે નીચેની સ્કોટિશ સ્થાનના નામો સાથે સ્થાનો તરીકે ઓળખાતી ફાઈલ છે:
એબરડિન
અબર્સ્ટેવિથ
અસ્થિરતા
ગુરુત્વાકર્ષણ
ઇનવરનેસ
ન્યુબર્ગ
નવી હરણ
નવા ગેલવેય
ગ્લાસગો
એડિનબર્ગ
જો તમે નામમાં ઇનવર સાથે તમામ સ્થાનો શોધવા માંગતા હોવ તો નીચેના વાક્યરચનાનો ઉપયોગ કરો:
grep inver * સ્થાનો
ફૂદડી (*) વાઇલ્ડકાર્ડ 0 અથવા ઘણા બધા માટે છે. તેથી જો તમારી પાસે ઇનવર નામની જગ્યા અથવા ઇનવરનેસ તરીકે ઓળખાતી જગ્યા હોય તો બંને પરત કરવામાં આવશે.
તમે ઉપયોગ કરી શકો છો તે અન્ય વાઇલ્ડકાર્ડ એ સમયગાળો (.) છે તમે એક અક્ષર સાથે મેળ કરવા માટે આનો ઉપયોગ કરી શકો છો.
grep inver.r સ્થાનો
ઉપરોક્ત આદેશમાં inverurie અને inverary નામના સ્થાનો શોધવામાં આવશે પરંતુ તેઓ અવેયરરીને શોધી શકશે નહીં કારણ કે સિંગલ અવધિ દ્વારા સૂચિત બે આર વચ્ચે એક વાઇલ્ડકાર્ડ જ હોઇ શકે છે.
આ સમયગાળો વાઇલ્ડકાર્ડ ઉપયોગી છે પરંતુ જો તે તમને શોધવામાં આવે છે તે ટેક્સ્ટના ભાગ રૂપે એક હોય તો તે સમસ્યાઓ ઊભી કરી શકે છે.
ઉદાહરણ તરીકે, ડોમેઈન નામોની આ સૂચિને જુઓ
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- રોજિનલિનક્સુસર.કોમ
- google.co.uk
- google.au
- direct.gov.uk
બધા about.com શોધવા માટે તમે ફક્ત નીચેનું વાક્યરચના ઉપયોગ કરીને શોધ કરી શકો છો:
* ડોમેન નામો વિશે grep *
ઉપરોક્ત આદેશ નીચે પડી જશે જો યાદીમાં નીચેનું નામ છે:
- રોજિનલિનક્સુઝર
તમે કરી શકો છો, તેથી, નીચેનું વાક્યરચના અજમાવો:
grep * about.com ડોમેન નામો
આ બરાબર કામ કરશે જ્યાં સુધી નીચેના નામથી ડોમેન ન હોત:
aboutycom.com
ખરેખર about.com શબ્દ શોધવા માટે તમારે નીચે પ્રમાણે ડોટની છટકી કરવાની જરૂર છે:
grep * about \ .com ડોમેન નામો
અંતિમ વાઇલ્ડકાર્ડ તમને બતાવવા માટે પ્રશ્ન ચિહ્ન છે જે શૂન્ય અથવા એક અક્ષર માટે વપરાય છે.
દાખ્લા તરીકે:
grep? ber placenames
ઉપરોક્ત આદેશ aberdeen, aberystwyth અથવા પણ berwick પાછા આવશે.
09 ની 03
Grep નો ઉપયોગ કરીને લીટીની શરુઆત અને અંતે સ્ટ્રીંગ્સ માટે શોધો
કેરેટ (^) અને ડોલર ($) પ્રતીક તમને રેખાઓના શરૂઆત અને અંતે પેટર્ન શોધવા માટે પરવાનગી આપે છે.
કલ્પના કરો કે તમારી પાસે નીચેની ટીમ નામો સાથે ફૂટબોલ તરીકે ઓળખાતી ફાઈલ છે:
- બ્લેકપુલ
- લીવરપૂલ
- માન્ચેસ્ટર સિટી
- લિસેસ્ટર સિટી
- માન્ચેસ્ટર યુનાઇટેડ
- ન્યૂકેસલ યુનાઇટેડ
- એફસી યુનાઈટેડ ઓફ માન્ચેસ્ટર
જો તમે માન્ચેસ્ટરથી શરૂ થતી તમામ ટીમો શોધવા ઇચ્છતા હો તો તમે નીચેની સિન્ટેક્સનો ઉપયોગ કરશો:
grep ^ માન્ચેસ્ટર ટીમો
ઉપરોક્ત આદેશ માન્ચેસ્ટર સિટી અને માન્ચેસ્ટર યુનાઈટેડ નહીં પરંતુ એફસી યુનાઈટેડ ઓફ માન્ચેસ્ટર પરત ફરશે.
વૈકલ્પિક રીતે તમે નીચેની સિન્ટેક્સનો ઉપયોગ કરીને યુનાઈટેડ સાથેની તમામ ટીમોને શોધી શકો છો:
યુનાઈટેડ ટીમની ટીમ
ઉપરોક્ત આદેશ માન્ચેસ્ટર યુનાઈટેડ અને ન્યૂકેસલ યુનાઇટેડ પરત ફરશે પરંતુ એફસી યુનાઈટેડ ઓફ માન્ચેસ્ટર નહીં.
04 ના 09
Grep નો ઉપયોગ કરીને મેળ ખાતી સંખ્યાઓની ગણતરી કરવી
જો તમે grep નો ઉપયોગ કરીને પેટર્નથી મેળ ખાતી વાસ્તવિક લીટીઓ પરત કરવા ન માંગતા હોવ પરંતુ તમે માત્ર જાણવા માગો છો કે તમે નીચેના વાક્યરચનાનો ઉપયોગ કેટલા કરી શકો છો:
grep -c પેટર્ન ઇનપુટફાઇલ
જો પેટર્ન બે વાર મેળ ખાતું હોય તો નંબર 2 પરત આવશે.
05 ના 09
બધી શરતો શોધવી કે જે grep નો ઉપયોગ કરીને મેળ ખાતી નથી
કલ્પના કરો કે નીચે સૂચિબદ્ધ દેશો સાથે તમારા સ્થાન નામોની સૂચિ છે:
- એબરડિન સ્કોટલેન્ડ
- ગ્લાસગો સ્કોટલેન્ડ
- લિવરપૂલ ઈંગ્લેન્ડ
- કોલ્વિન બે
- લંડન ઈંગ્લેન્ડ
તમે નોંધ્યું છે કે કોલ્વીન બેને તેની સાથે કોઈ દેશ સંકળાયેલ નથી.
દેશ સાથે તમામ સ્થાનો શોધવા માટે તમે નીચેની વાક્યરચનાનો ઉપયોગ કરી શકો છો:
grep જમીન $ સ્થાનો
કોલ્વીન બે સિવાય પરિણામો બધા સ્થાનો હશે.
આ દેખીતી રીતે માત્ર જમીનમાં જ રહેલા સ્થાનો (ભાગ્યે જ વૈજ્ઞાનિક) માટે જ કામ કરે છે.
તમે નીચેના વાક્યરચનાનો ઉપયોગ કરીને પસંદગીને ઉલટાવી શકો છો:
grep -v જમીન $ સ્થાનો
આ બધા સ્થાનો કે જે જમીન સાથે અંત ન હતી શોધવા કરશે
06 થી 09
Grep નો ઉપયોગ કરીને ફાઇલોમાં ખાલી લીટીઓ કેવી રીતે શોધવી
કલ્પના કરો કે તમારી પાસે ઇનપુટ ફાઇલ છે જે તૃતીય પક્ષ એપ્લિકેશન દ્વારા ઉપયોગમાં લેવાતી હોય છે જે ફાઇલને વાંચતી અટકી જાય છે જ્યારે તે નીચે પ્રમાણે ખાલી લીટી શોધે છે:
- એબરડિન સ્કોટલેન્ડ
- ઇનવરનેસ સ્કોટલેન્ડ
- લિવરપૂલ ઈંગ્લેન્ડ
- કોલ્વીન બે વેલ્સ
જ્યારે લિવરપૂલ પછી એપ્લિકેશનને લીટી મળે છે ત્યારે તેનો અર્થ વાંચવાનું બંધ થઈ જાય છે, કોલ્વીન બે સંપૂર્ણપણે ચૂકી ગયા છે.
નીચેની વાક્યરચના સાથે ખાલી લીટીઓ શોધવા માટે તમે grep નો ઉપયોગ કરી શકો છો:
grep ^ $ places
કમનસીબે આ ખાસ કરીને ઉપયોગી નથી કારણ કે તે ફક્ત ખાલી રેખાઓ આપે છે.
તમે અલબત્ત, ખાલી લીટીઓની સંખ્યાની ગણતરી ચેક દ્વારા શોધી શકો છો કે ફાઈલ નીચે પ્રમાણે માન્ય છે કે નહીં:
grep -c ^ $ સ્થાનો
તેમ છતાં તે લીટી નંબરોને જાણવા માટે વધુ ઉપયોગી છે કે જે ખાલી રેખા ધરાવે છે જેથી તમે તેમને બદલી શકો. તમે તે નીચેના આદેશ સાથે કરી શકો છો:
grep -n ^ $ places
07 ની 09
Grep નો ઉપયોગ કરીને અપરકેસ અથવા લોઅરકેસ અક્ષરોના સ્ટ્રીંગ્સ માટે કેવી રીતે શોધવું
Grep વાપરીને તમે નક્કી કરી શકો છો કે ફાઇલમાં કઈ લીટીઓ નીચેના સિન્ટેક્સનો ઉપયોગ કરીને અપરકેસ અક્ષરો ધરાવે છે:
grep '[AZ]' ફાઇલનામ
ચોરસ કૌંસ [] તમને અક્ષરોની શ્રેણી નક્કી કરવા દો ઉપરના ઉદાહરણમાં તે કોઈપણ અક્ષર સાથે મેળ ખાય છે જે એ અને ઝેડ વચ્ચે હોય છે.
તેથી લોઅરકેસ અક્ષરોને મેચ કરવા માટે તમે નીચેનું વાક્યરચના વાપરી શકો છો:
grep '[az]' ફાઇલનામ
જો તમે ફક્ત અક્ષરો સાથે મેળ ખાતો નથી અને આંકડાકીય અથવા અન્ય પ્રતીકો નહીં કરવા માંગો છો, તો તમે નીચેના વાક્યરચનાનો ઉપયોગ કરી શકો છો:
grep '[a-zA-Z]' ફાઇલનામ
નીચે પ્રમાણે નંબરો સાથે તમે આ કરી શકો છો:
grep '[0-9]' ફાઇલનામ
09 ના 08
Grep મદદથી પુનરાવર્તન પેટર્ન માટે છીએ
પુનરાવર્તન પેટર્ન શોધવા માટે તમે સર્પાકાર કૌંસ {} નો ઉપયોગ કરી શકો છો.
કલ્પના કરો કે તમારી પાસે નીચે પ્રમાણે ફોન નંબરો ધરાવતી ફાઇલ છે:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
તમને ખબર છે કે નંબરનો પ્રથમ ભાગ ત્રણ અંકોની જરૂર છે અને તમે આ પેટર્નથી મેળ ખાતા લીટીઓ શોધી શકો છો.
અગાઉના ઉદાહરણમાંથી તમને ખબર છે કે [0-9] ફાઇલમાં બધા નંબરો આપે છે.
આ ઉદાહરણમાં આપણે જોઈએ છીએ કે રેખાઓ ત્રણ નંબરો સાથે શરૂ થાય છે જે હાયફન (-) દ્વારા અનુસરવામાં આવે છે. તમે નીચેનું વાક્યરચના સાથે તે કરી શકો છો:
grep "^ [0-9] [0-9] [0-9] -" નંબરો "
આપણે અગાઉના ઉદાહરણો પરથી જાણીએ છીએ કે કેરેટ (^) નો અર્થ છે કે રેખા નીચેની પેટર્નથી શરૂ થવી જોઈએ.
[0- 9] 0 થી 9 ની વચ્ચે કોઇ પણ નંબર શોધવા કરશે. કારણ કે તેમાં ત્રણ વખતનો સમાવેશ થાય છે તે 3 નંબરો સાથે મેળ ખાય છે. અંતે એ સંકેત આપવા માટે એક હાયફન છે કે હાયફન ત્રણ નંબરો સફળ થવું જોઈએ.
સર્પાકાર કૌંસનો ઉપયોગ કરીને તમે શોધ નાના નીચે પ્રમાણે કરી શકો છો:
grep "^ [0-9] \ {3 \} -" નંબરો
સ્લેશ {કૌંસમાંથી બહાર નીકળે છે, જેથી તે નિયમિત સમીકરણના ભાગ રૂપે કામ કરે છે પરંતુ સારાંશમાં [0- 9] {3} જેનો મતલબ 0 થી 9 ગુણ્યા ત્રણ વખત થાય છે.
આ સર્પાકાર કૌંસનો પણ નીચે પ્રમાણે ઉપયોગ કરી શકાય છે:
{5,10}
{5,}
{5,10 }નો અર્થ છે કે જે પાત્રની શોધ કરવામાં આવી છે તે ઓછામાં ઓછી 5 વખત પુનરાવર્તિત થવી જોઈએ, પરંતુ 10 થી વધુ નહીં પરંતુ જ્યારે કે {5,} તેનો અર્થ છે કે પાત્રને ઓછામાં ઓછું 5 વખત પુનરાવર્તિત કરવું જોઈએ પરંતુ તે તેના કરતા વધુ હોઈ શકે છે.
09 ના 09
Grep નો ઉપયોગ કરીને અન્ય આદેશોમાંથી આઉટપુટનો ઉપયોગ કરવો
આમ અત્યાર સુધી અમે વ્યક્તિગત ફાઇલોમાં પેટર્ન મેચિંગ પર જોયું છે પરંતુ grep પેટર્ન મેચિંગ માટે ઇનપુટ તરીકે અન્ય આદેશોમાંથી આઉટપુટનો ઉપયોગ કરી શકે છે.
આનું એક ઉત્તમ ઉદાહરણ ps આદેશનો ઉપયોગ કરે છે જે સક્રિય પ્રક્રિયાઓની યાદી આપે છે.
ઉદાહરણ તરીકે, નીચેનો આદેશ ચલાવો:
ps -ef
તમારી સિસ્ટમ પર ચાલી રહેલી તમામ પ્રક્રિયાઓ પ્રદર્શિત થશે.
તમે નીચે પ્રમાણે ચોક્કસ ચાલતી પ્રક્રિયા શોધવા માટે grep નો ઉપયોગ કરી શકો છો:
ps -ef | grep firefox