Si të printoni ndeshjen e parë dhe të ndaloni me Grep


grep është një mjet kërkimi në Linux që përdoret për përputhjen e përmbajtjes. Si parazgjedhje, ai do të printojë çdo rresht që përputhet, i cili mund të përfshijë shumë rezultate. Nëse kujdeseni vetëm për ndeshjen e parë, mund ta kufizoni daljen vetëm në rreshtin e parë.

Kufizimi i prodhimit me grep -m

Komanda grep ka një parametr -m ose --max-count r, i cili mund ta zgjidhë këtë problem, por mund të mos funksionojë siç e prisnit.

Ky parametër do të bëjë që grep të ndalojë përputhjen pasi të gjejë N linja që përputhen, gjë që funksionon shkëlqyeshëm pasi do të kufizojë daljen në një rresht, që gjithmonë përmban përputhjen e parë. Këtë mund ta verifikojmë me flamurin -n për të printuar numrat e rreshtave.

grep -m 1 "foo" file

Megjithatë, kjo ka disa dobësi për të cilat duhet të keni parasysh. Nuk ndalon pas N përputhjeve, por ndalon pas N linjave. Kjo do të bëjë që grep  të përputhet disa herë në secilën rresht, gjë që mund të jetë problem kur përdoret me flamurin -o , i cili printon çdo përputhje në një rresht të ri.

Gjithashtu, janë vetëm N rreshta për skedar, kështu që kur përdoret kundër skedarëve të shumtë, ai do të printojë rreshtin e parë që përputhet për çdo skedar.

Përdorimi i kokës për të kufizuar daljen grep

Alternativa është të dërgoni daljen në një komandë tjetër, head, e cila thjesht do të ndërpresë hyrjen pas rreshtave N. Është ende pak e dobishme të përdoret -m 1 me grep megjithatë, pasi do të ndalojë përpunimin e skedarëve të mëdhenj nëse një përputhje gjendet herët.

grep "foo" file_one.txt | head -1

Kjo funksionon me flamurin -o për të printuar vetëm ndeshjen e parë, edhe nëse ka shumë përputhje në një skedar:

Megjithatë, kini kujdes kur e përdorni këtë me shumë skedarë. Përdorimi i head do të printojë rreshtin e parë të përputhur në çdo skedar. Ky mund të jetë një problem pasi grep shtyp rezultatin sipas radhës që përpunon skedarët dhe mund të mos e dini se në çfarë renditje do të përpunohen skedarët, përveçse nëse i renditni manualisht përpara se t'i kaloni te grep .

Në mënyrë të ngjashme, mund të përdorni gjithashtu bisht për të printuar rreshtin e fundit që përputhet.