Чи можна передати відносно велику рядок grep
чи може він тільки прийняти файл?
Зауважте, що я не говорю про виведення каналів у grep, але роблю щось подібне:
grep 'hello' 'hello world'
(що, звичайно, не працює, принаймні не так)
Чи можна передати відносно велику рядок grep
чи може він тільки прийняти файл?
Зауважте, що я не говорю про виведення каналів у grep, але роблю щось подібне:
grep 'hello' 'hello world'
(що, звичайно, не працює, принаймні не так)
Відповіді:
Це можливо. Спробуйте це:
grep 'hello' <<< 'hello world'
Також можна передавати змінну, що містить рядок:
str='hello world'
grep 'hello' <<< $str
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
рядки, що містять більше одного рядка тексту. Ви навіть можете ввести їх у оболонку інтерактивно, якщо хочете.
Якщо це не відповідає вашим потребам, можливо, ви могли б пояснити, чому трубопроводи не є прийнятним рішенням?
Втягніть його grep
Чому не просто:
echo 'hello world' | grep 'hello'
Дивіться також: https://stackoverflow.com/questions/2106526/how-can-i-grep-complex-strings-in-variables
grep
? Так може бути щось подібнеprintf "various\ntext to grep here" | grep "text"
вироблятиме "текст для grep тут"