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 для перебора слов и при этом использовать 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
), поэтому вам, возможно, придется настроить синтаксис так, чтобы он соответствовал вашей конкретной оболочке.
Надеюсь, что это может помочь.