24

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

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

grep 'hello' 'hello world'

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

3 ответа3

28

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

grep 'hello' <<< 'hello world'

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

str='hello world'
grep 'hello' <<< $str
11

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

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

1

Труба это в grep

Почему не просто

echo 'hello world' | grep 'hello'

Смотрите также: https://stackoverflow.com/questions/2106526/how-can-i-grep-complex-strings-in-variables

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .