Я получаю эту линию с гну СЭД:
sed -r 's#(<start>)(.*)(</start>)#echo "\1"$(echo "\2"\|sed "s:a>:ab>:g")"\3"#ge'
см. Пример:
kent$ echo "<start><a></a><a></a><a></a><foo></foo><bar></bar></start>"|sed -r 's#(<start>)(.*)(</start>)#echo "\1"$(echo "\2"\|sed "s:a>:ab>:g")"\3"#ge'
<start><ab></ab><ab></ab><ab></ab><foo></foo><bar></bar></start>
примечание
это заменит теги между <start>
с которой оканчивающиеся a
. который работал для вашего примера. но если у вас есть <aaa></aaa>
:
вы могли бы сделать: (я разбить его на строки для лучшего чтения)
sed -r 's#(<start>)(.*)(</start>)
#echo "\1"$(echo "\2"\|sed "s:<a>:<ab>:g;s:</a>:</ab>:g")"\3"
#ge'
например
kent$ echo "<start><a></a><a></a><a></a><aaa></aaa><aba></aba></start>" \
|sed -r 's#(<start>)(.*)(</start>)#echo "\1"$(echo "\2"\|sed "s:<a>:<ab>:g;s:</a>:</ab>:g")"\3"#ge'
<start><ab></ab><ab></ab><ab></ab><aaa></aaa><aba></aba></start>
не только ** ' вне' **, но и теги, как ' или ...' –
Kent
Я думаю, что я установил его, но обратные ссылки - это не то, что я обычно использую, так что может быть неправильно. – PaulProgrammer
Если вы не уверены, тогда прямо укажите ответ. –