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), так що ви , можливо , доведеться налаштувати , щоб мати синтаксис відповідає вашій конкретній оболонки.
Сподіваюся, що це може допомогти.