В Mac OSX, но мне нужно, чтобы скрипт был кросс-платформой для Linux, поскольку существуют различия между GNU sed и OSX sed.Использование диапазона поиска SED и его дублирования
У меня есть файл, который использует выраженные выражения, чтобы сообщить моему сценарию дублировать весь диапазон. Вот мое текущее решение. Я пробовал использовать/a и/i, используя различные флаги, и я продолжаю получать несколько ошибок адресов.
#!/bin/bash
...
stream=$(`cat file.txt`)
for i in 3; do
stream=$(echo "$stream" | sed '/%%RANGE_STUB/,/%%/ p ')
done
В настоящее время это берет мой файл и дублирует колебались содержание внутри само по себе. Мне нужно, чтобы он пошел после.
Вот файл:
Some text here.
%%RANGE_STUB
This content is copied and preserved including the RANGE_STUB and double % symbols
%%
Вот результат:
Some text here.
%%RANGE_STUB
%%RANGE_STUB
%%RANGE_STUB
This contents is copied and preserved including the RANGE_STUB and double % symbols
%%
%%
%%
Вот желаемый результат:
Some text here.
%%RANGE_STUB
This contents is copied and preserved including the RANGE_STUB and double % symbols
%%
%%RANGE_STUB
This contents is copied and preserved including the RANGE_STUB and double % symbols
%%
%%RANGE_STUB
This contents is copied and preserved including the RANGE_STUB and double % symbols
%%
sed для простых подстановок на отдельных линиях, то есть все. Для чего-либо еще вы должны использовать awk. Выражения диапазона делают тривиальные задачи очень незначительными, но затем требуют дублирования условий или полного переписывания при минимальном изменении требований, поэтому его следует избегать в пользу флага (тривиально реализованного в awk). Вы уже знаете, что у sed проблемы с переносимостью, поэтому просьба о переносном решении sed не имеет столь же большого смысла, как просто запрос на решение awk. –
да, что имеет смысл – Maverick