0

私は正規表現があまり得意ではないので、検索する必要があります

</> 任意の単語とrepace<anyword></anyword>

<book/>したい<book></book>

4

4 に答える 4

3

正規表現を使用してXMLを解析しようとしているようですが、これは通常は悪い考えです— XMLは当初の見た目よりもはるかに複雑です(置き換えが必要な場合はどうなります<a b="c"/><a b="c"></a>?非ASCII要素名はどうなりますか?)—しかし、あなたが説明したことがまさにあなたが必要としているものであると確信しているなら、あなたは次のように書くことができます:

perl -pe 's{<(\w+)/>}{<$1></$1>}g' < input_file > output_file

また:

sed 's|<\([^[:space:]][^[:space:]]*\)/>|<\1></\1>|g' < input_file > output_file
于 2012-05-23T14:11:03.973 に答える
1

使用する

sed -i 's|<\([[:alpha:]][[:alpha:]]*\)/>|<\1></\1>|g' $input_file

ファイルをインラインで変更します(これ-iが目的です)。注意:これ-iはGNU拡張機能です。

POSIXに準拠し、ファイルをインラインで編集するには(* IXシステムの場合)、次を使用します。

echo '/<[[:alpha:]][[:alpha:]]*\/>/g\
s/<\([[:alpha:]][[:alpha:]]*\)\/>/<\1><\/\1>/g
wq' | ed $input_file

seded、および正規表現に関するPOSIX標準を参照してください。

于 2012-05-23T14:54:28.997 に答える
0

タグに一致する正規表現は次のようになります。

<(\w+)/>

キャプチャグループを使用すると、次のような新しいタグを作成できます。

<\1></\1>
于 2012-05-23T14:09:21.107 に答える
0

これはあなたのために働くかもしれません:

echo '<book/>' | sed 's|<\([^/]*\)/>|<\1></\1>|'
<book></book>
于 2012-05-23T14:43:49.870 に答える