Si të përdorni përputhjen negative me grep në Linux (Shtypni linjat që nuk përputhen)


grep është një mjet kërkimi i linjës së komandës për Linux që do të printojë rreshta në skedarë që përputhen me një model ose shprehje të rregullt. Është gjithashtu e dobishme të përmbysësh ndeshjet, të cilat do të filtrojnë të gjitha linjat në një skedar që përmbajnë vargun e dhënë.

Përputhja negative me grep

Për të përdorur përputhjen negative në grep, duhet të ekzekutoni komandën me flamujt -v ose --invert-match . fortë> Kjo do të printojë vetëm rreshtat që nuk përputhen me modelin e dhënë.

grep -v "bar" file

Megjithatë, ki parasysh se meqenëse grep nuk përputhet me asgjë, nuk ka asnjë mënyrë për të përdorur flamurin -o për të printuar vetëm ndeshjet, pasi asgjë nuk përputhet teknikisht. grep është në gjendje të përputhet shumë herë për rresht, por në këtë rast, nuk ka rëndësi nëse ka shumë përputhje. Çdo përputhje e vetme do të bëjë që grep të heqë rreshtin.

Kjo funksionon edhe me shprehje të rregullta (regex) dhe do të printojë çdo rresht që skedari përputhet me regex.

grep -v "foo ba[rz]" file

Ndërsa mund të shkruani shprehje të rregullta që bëjnë përputhje negative, në përgjithësi është më e lehtë të përmbysësh përputhjen në këtë mënyrë.

Përndryshe, nëse preferoni të përdorni awk, mund të përdorni modifikuesin e pasthirrmës për të përmbysur regex.

awk '!/bar/' file

Emrat e skedarëve që përputhen negativisht

Flamuri i vogël -l do të bëjë që grep të printojë emrat e skedarëve që përmbajnë përputhje në vend të përmbajtjes aktuale të përputhur. Kjo mund të jetë e dobishme kur skanoni një listë skedarësh, por në mënyrë të ngjashme, është gjithashtu e dobishme ta përmbysni këtë ndonjëherë.

Anasjellta e -l është varianti i madh, -L, i cili bën të kundërtën:

grep -L "bar" ./*.txt

Sigurohuni që të mos përdorni flamurin -v me -L për të përmbysur përputhjen përpara se të printoni skedarët pa përputhje, ose do të hasni në një të kundërta të dyfishta situata ku ndeshja përmbyset dy herë dhe nuk ka efektin e synuar.