Як виключити слово за допомогою 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 ThisWord"
Виводом буде текстовий файл example.txt, але за винятком будь-якого рядка, який містить рядок, що збігається з «ThisWord».
Ви також можете використовувати 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"
Отже, якщо ви стежите за цим, це звітуватиме про всі історичні виконання команди «defaults write», але за винятком усього, що стосується програми iTunes. Гарно, га?
Якщо у вас є якісь особливо зручні способи використання виключення збігів за допомогою grep, поділіться ними з нами в коментарях нижче! І якщо вам сподобалася ця стаття, ви майже напевно захочете переглянути наші численні статті про командний рядок тут, де можна ще багато чого дізнатися!