Как исключить слово с помощью grep
Оглавление:
Инструмент командной строки grep чрезвычайно полезен для поиска в текстовых данных строк и фрагментов, которые соответствуют определенной строке, символу, слову или регулярному выражению. Хотя в большинстве случаев grep используется для сортировки данных на соответствие синтаксису, что, если вместо этого вы хотите исключить слово или строку с помощью grep? Исключение совпадений строк с помощью grep так же полезно, как поиск и вывод совпадений в grep, поэтому давайте рассмотрим, как исключить совпадения строк и исключить слова с помощью grep.
Очевидно, вам понадобится некоторый опыт работы с командной строкой и знакомство с grep, чтобы найти это полезным. Если вы хотите продолжить, вы можете открыть приложение «Терминал» и попробовать его самостоятельно. Поскольку утилита grep не зависит от операционной системы, вы можете использовать трюк с исключением в Mac OS, Linux, unix или любом другом устройстве, использующем grep.
Как исключить одно слово с помощью grep
Самый простой способ исключить строки с совпадением строки или синтаксиса — использовать команду grep и флаг -v.
Например, предположим, что мы используем cat для печати файла в командной строке, но мы хотим исключить все строки, содержащие термин «ThisWord», тогда синтаксис будет выглядеть следующим образом:
cat example.txt | grep -v Это слово"
Вывод будет текстовым файлом example.txt, за исключением любой строки, содержащей строку, совпадающую с «ThisWord».
Вы также можете использовать grep непосредственно для файлов и исключать совпадения строк на основе слов или синтаксиса, например:
"grep -v ThisWord>"
Используйте то, что лучше всего подходит для вашего конкретного рабочего процесса.
Как исключить несколько строк или слов с помощью grep
Теперь, когда вы знаете, как исключить совпадения для одного слова, следующий очевидный вопрос касается исключения нескольких слов с помощью grep. Это так же просто, и есть несколько разных способов сделать это, используя флаг -v, а также флаг -e.
Во-первых, давайте возьмем приведенный выше пример использования cat в файле, переданном в grep, и исключим все строки, соответствующие двум словам; «Word1» и «Word2», это будет выглядеть следующим образом:
"cat example.txt | grep -v -e Слово1 -e Слово2"
Любые строки, содержащие «Слово1» или «Слово2», будут исключены из результатов печати.
Вы также можете использовать 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, поделитесь ими с нами в комментариях ниже! И если вам понравилась эта статья, вы почти наверняка хотели бы просмотреть наши многочисленные статьи о командной строке, где можно узнать еще много нового!