Как да изключите дума с grep
Съдържание:
Инструментът за команден ред grep е изключително полезен за търсене в текстови данни за редове и фрагменти, които съответстват на дефиниран низ, знак, дума или регулярен израз. Докато повечето употреби на grep са за сортиране на данни за синтактични съвпадения, какво ще стане, ако вместо това искате да изключите дума или низ с grep? Изключването на съвпадения на редове с grep е също толкова полезно, колкото намирането и отпечатването на съвпадения в grep, така че нека разгледаме как да изключим съвпадения на низове и думи с grep.
Очевидно ще искате да имате известен опит с командния ред и да се запознаете с grep, за да намерите това полезно. Ако искате да следвате, можете да отворите приложението Terminal и да го изпробвате сами. Тъй като grep е агностична програма за ОС, можете да използвате трика за изключване в Mac OS, Linux, unix или каквото и да е друго, което използвате grep.
Как да изключите една дума с grep
Най-простият начин за изключване на редове със съвпадение на низ или синтаксис е чрез използване на grep и флага -v.
Например, да кажем, че използваме cat за отпечатване на файл в командния ред, но искаме да изключим всички редове, които включват термина „ThisWord“, тогава синтаксисът ще изглежда както следва:
cat example.txt | grep -v тази дума"
Резултатът ще бъде текстовият файл example.txt, но с изключение на всеки ред, който съдържа съвпадение на низ с „Тази дума“.
Можете също да използвате grep директно върху файлове и да изключите съвпадения на редове въз основа на думи или синтаксис, като така:
"grep -v ThisWord>"
Използвайте това, което работи най-добре за вашия конкретен работен процес.
Как да изключите множество низове или думи с grep
Сега, след като знаете как да изключите съвпадения за една дума, следващият очевиден въпрос е за изключването на няколко думи с grep. Това е също толкова просто и има няколко различни начина да го постигнете, като използвате флага -v, както и флага -e.
Първо нека вземем горния пример за използване на cat във файл, прехвърлен към grep, и да изключим всички редове, съответстващи на две думи; „Word1“ и „Word2“, това ще изглежда по следния начин:
"cat example.txt | grep -v -e Word1 -e Word2"
Всички редове, които съдържат „Word1“ или „Word2“, ще бъдат изключени от отпечатаните резултати.
Можете също да използвате grep директно върху файлове, както и преди:
"grep -v -e Word1 -e Word2 example.txt"
Друг подход е да се отдели това, което да се изключи с grep, като се използва тръба за разделяне на всяко съвпадение, така:
grep -Ev word1|word2 example.txt"
Ако изпробвате някоя от тези опции върху примерен текстов файл, ще откриете, че резултатът е идентичен, независимо от подхода, който възприемате, като всеки от тях изключва редове, които включват целевите фрази, синтаксис, думи или текстово съвпадение.
Страхотно, покажете ми полезен пример за изключване на данни с grep!
За практичен пример, който напредналите потребители на Mac може да намерят полезен, можем да използваме изключване на grep, когато отпечатваме и правим заявки за хронология на командния ред, за да намерим предишни изпълнени команди, за да намерим съвпадения по подразбиране, но изключваме някои избрани низове по подразбиране от изход.
В примера тук ще отпечатаме хронологията на командите за съвпадения на низове по подразбиране, но ще изключим всичко съвпадащо, свързано с iTunes, както е дефинирано от „com.apple.itunes”:
"history |grep defaults write |grep -v -e com.apple.itunes"
Така че, ако сте следвали, това ще отчете всички исторически изпълнения на командата „запис по подразбиране“, но с изключение на всичко, което се отнася до приложението iTunes. Хубаво, а?
Ако имате някакви особено удобни приложения за изключване на съвпадения с grep, споделете ги с нас в коментарите по-долу! И ако ви хареса тази статия, почти сигурно бихте искали да прегледате нашите многобройни статии за командния ред тук, където има много повече за научаване!