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


26

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

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

grep 'hello' 'hello world'

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


Может быть, передать некоторые текстовые данные 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строки, содержащие более одной строки текста. Вы даже можете вводить их в оболочку в интерактивном режиме, если хотите.

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.