Как запустить grep для переменной zsh?

Я узнал, что Ubuntu предлагает возможность изменять размер раздела на диске. Следовательно, я мог бы сделать это и увеличить размер раздела до 150 ГБ

.
3
02.10.2020, 17:25
2 ответа

Кажется, вы хотите найти fooили barв переменной zsh, которая по сути является результатом какой-то команды. Я не уверен, почему вы идете дополнительным путем, чтобы передать строки поиска в grep, но если это не является абсолютно необходимым, вы можете сделать

big_query_that_returns_text | grep -E "foo|bar"

Если вы хотите использовать вывод big_query_that_returns_textболее чем в одном месте и по этой причине сохранить его в переменной оболочки, вы все равно можете использовать

var=$(big_query_that_returns_text)

printf '%s\n' "$var" | grep -E "foo|bar"

... (other operations on $var)...

Здесь используется printf '%s\n'. Другими альтернативами могут быть print -r -- "$var"или echo -E - "$var", или использовать здесь -документ или здесь -строку. Все printf, printи echoвстроены -в zsh, поэтому список аргументов не будет слишком длинным , что является ограничением execve(). ] системный вызов, поэтому применяется только к внешним командам, которые выполняются (, например grep, которые не встроены вzsh).

3
18.03.2021, 23:00

Это место для подстановки процесса:это блок кода, который действует как файл

Направить большие результаты запроса на стандартный ввод grep

big_query_that_returns_text | grep -f <(printf '%s\n' "foo" "bar")

Если команда для создания «foo» и «bar» более сложная, вы можете улучшить читаемость с помощью произвольных символов новой строки внутри подстановки процесса:

big_query_that_returns_text \
| grep -f <(
      printf '%s\n' "foo" "bar"
  )
5
18.03.2021, 23:00

Теги

Похожие вопросы