2013-05-06 3 views

ответ

0

sed 's/(\<\/?)a\>/\1ab\>/g' yourfile, хотя это было бы получить <a></a>, что было за пределами <start>, а также ...

+0

не только ** ' вне ' **, но и теги, как ' или ...' – Kent

+0

Я думаю, что я установил его, но обратные ссылки - это не то, что я обычно использую, так что может быть неправильно. – PaulProgrammer

+0

Если вы не уверены, тогда прямо укажите ответ. –

0

Я получаю эту линию с гну СЭД:

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> 
0

grep -rl 'abc' a.txt | xargs СЕПГ -i «s/а/Защита/г»