0

このような文字列があるとします

<start><a></a><a></a><a></a></start>

<start></start>このように内部の値を置き換えたい

<start><ab></ab><ab></ab><ab></ab><more></more><vale></value></start>

Sedを使用してこれを行うにはどうすればよいですか?

4

4 に答える 4

1

これを試して :

sed 's@<start>.*</start>@<start><ab></ab><ab></ab><ab></ab></start>@' file
于 2013-05-06T23:00:15.520 に答える
0

gnu sedで次の行を取得します。

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>これにより、で終わる s間のタグが置き換えられ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>
于 2013-05-06T23:29:52.950 に答える