Передайте (большую) строку в grep вместо имени файла

26

Можно ли передать относительно большую строку grepили она может принимать только файл?

Обратите внимание, что я не говорю о передаче вывода в grep, но делаю что-то вроде:

grep 'hello' 'hello world'

(что, конечно, не работает, по крайней мере, не так)

user2018084
источник
Может быть, передать некоторые текстовые данные grep? Так что, может быть, что-то подобное printf "various\ntext to grep here" | grep "text"выдаст «текст для grep здесь»
Alex

Ответы:

31

Это возможно. Попробуй это:

grep 'hello' <<< 'hello world'

Вместо этого вы также можете передать переменную, содержащую строку:

str='hello world'
grep 'hello' <<< $str
Кики Лукман Хакием
источник
5
Для справки это строка здесь . Вы можете прочитать больше здесь .
Rockallite
1
цитата из вики: доступна в bash , ksh или zsh
hoijui
13

grepне имеет возможности интерпретировать аргументы командной строки как текст для поиска. Нормальный путь к grepстроке - передать строку в grepстандартный ввод:

$ echo 'There once was a man from Nantucket
Who kept all his cash in a bucket.
    But his daughter, named Nan,
    Ran away with a man
And as for the bucket, Nantucket.' | grep -i nan
There once was a man from Nantucket
    But his daughter, named Nan,
And as for the bucket, Nantucket.
$

Как вы видите здесь, вы можете echoстроки, содержащие более одной строки текста. Вы даже можете вводить их в оболочку в интерактивном режиме, если хотите.

Если это не отвечает вашим потребностям, возможно, вы могли бы объяснить, почему трубопровод не является приемлемым решением?

Kenster
источник