grep
є досить поширеною командою Unix / Linux, принаймні, я ще не стикався з будь-яким дистрибутивом, який мені довелося спеціально встановити основну grep
(проти сказати egrep
чи іншу команду фільтра).
взяти трубопровідний вхід, відфільтрувати певні рядки та записати решту до стандартного виводу.
Щоб використовувати його так, щоб його відфільтрувати, ви можете зробити наступне (якщо припустити, що ви використовуєте cat
для друку файлу на стандартний вихід)
cat "some_file.txt" | grep -v "text to omit"
Крім того, grep
також працює і файли, так що вищевказана команда може бути просто записана як така:
grep -v "text to omit" "some_file.txt"
-v
Прапор вказує grep
на друк всі , крім зазначеного тексту. Якщо ви хочете шукати регістр, вам потрібно вказати -i
прапор.
це не один елемент на рядок, це всі елементи в одному рядку, розділені пробілами, а не новими рядками.
Для цього ви можете додати цикл for itterate над словами та все ще використовувати grep, щоб досягти того, що вам потрібно, наприклад:
for word in "hello there how" are you how "am i today"; do echo $word; done | grep -v "how"
Вихід для цього буде:
are
you
am i today
І щоб вивести його в один рядок, ви можете скористатися tr
командою для перекладу на \n
пробіл:
for word in "hello there how" are you how "am i today"; do echo $word; done | grep -v how | tr '\n' ' '
Тут результат буде:
are you am i today
Перша частина for word in
- це сценарій оболонки for loop
. Посилаємося специфічний для BASH
але синтаксис дуже схожий серед інших оболонок (принаймні , для CSH
, KSH
і ASH
), так що ви , можливо , доведеться налаштувати , щоб мати синтаксис відповідає вашій конкретній оболонки.
Сподіваюся, що це може допомогти.