Иногда мне было бы очень полезно иметь возможность использовать grep для строки (без строки в файле).

Например:

var="Some random string"
$var | grep -e "Some"

Я думаю, я мог бы использовать echo $var | grep ... , но я не хочу, чтобы строка записывалась на консоли.

2 ответа2

2

echo $var | grep -e "Some" - это на самом деле правильный подход. При передаче вывода через grep с помощью | больше не отображается на консоли. Со страницы руководства Bash:

Трубопроводы

Конвейер - это последовательность из одной или нескольких команд, разделенных одним из операторов управления | или |& . Формат для конвейера:

[time [-p]] [ ! ] command [ [|│|&] command2 ... ]

Стандартный вывод command подключен через канал к стандартному вводу command2 . Это соединение выполняется перед любыми перенаправлениями, указанными в команде (см. ПЕРЕПРАВКА) Если используется |& , стандартная ошибка command связана со стандартным вводом command2 через канал; это сокращение для 2>&1 | , Это неявное перенаправление стандартной ошибки выполняется после любых перенаправлений, указанных в команде.

2

bash теперь допускает здесь строки, например:

var="Some random string"
grep -e "Some" <<<"$var"

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