Там какое-либо различие использует каналы?

[1186447]С вашими примерами данных, вот решение [1186952]GNU grep[1186953]: [12211]
1
27.04.2014, 14:03
3 ответа
[115885]Да, две команды, которые вы разместили, на 100% эквивалентны, так что вы можете безопасно изменить ваш скрипт, чтобы не использовать трубы.

Но ваша аргументация ошибочна: вы измеряли только время, необходимое для [116250]echo XYZ[116251], а не фактические [116252]sed[116253] вызовы. Однако, вы увидите, что все равно быстрее не использовать трубы :)

2
27.01.2020, 23:17
[115889] Короткий ответ: когда вы используете [116254]pipe[116255] для выполнения различных замен, shell'у должен вилкировать несколько раз.

  1. С другой стороны, выражение [116256]sed[116257], содержащее команды для различных замен, требует от shell'а вилки всего один раз. Поэтому было бы более эффективно иметь различные команды в одном выражении типа:
  2. Для ответа на вторую часть, вышеприведенный вариант эквивалентен следующему [116258]медленному[116259] варианту:
3
27.01.2020, 23:17
[115923] Также существует расширение GNU до [116283]sed[116284], которое условно вилкирует:

e


Эта команда позволяет вводить данные из команды оболочки в пространство шаблона. Если была произведена замена, то выполняется команда, находящаяся в пространстве шаблона, и пространство шаблона заменяется его выводом. Если выполняемая команда содержит символ NUL, то результат не определяется.

0
27.01.2020, 23:17

Теги

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