Прочитать вывод команды в переменную [duplicate]

Просто для удовольствия: это цикл оболочки над интерактивным строковым редактором ed это решает проблему:

while ed text.in <script.ed >/dev/null; do
  :  # nothing here
done

Файл script.ed содержит

/^[^#].*Fail/-2
.,+3s/^/#/
w
  1. Первая строка сценария редактирования находит следующую строку, содержащую слово Fail , которое еще не было добавлено с # , и отступает на две строки от этого.

  2. Вторая строка сценария заменяет начало строки на # (т.е. добавляет # к строке) для текущей строки и еще трех строк вперед.

  3. Третья строка сценария записывает файл обратно на диск.

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

Как вариант, без отдельного скрипта редактирования в файле:

while ed text.in >dev/null <<ED_END
/^[^#].*Fail/-2
.,+3s/^/#/
w
ED_END
do
  :  # nothing here
done
1
11.07.2013, 16:15
0 ответов

Теги

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