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.