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