1

xml ファイルから単語の出現をすべて削除しようとしています。削除したいパターンは以下のようなものです:

& lt;foo_bar>300</foo_bar& gt;

私は sed に精通していませんが、それを使用して実現可能であることは知っています。私は次のようなものを試しました:

sed 's^&lt[foo_bar]>$g' myfile.xml

また

sed 's/^&lt[foo_bar]>$//' myfile.xml

どちらもエラー メッセージで失敗しました。では、これを理解する方法を教えてください。OSはSolaris 10なので、GNUバージョンではなく標準バージョンがインストールされている可能性が最も高いです。式の & 記号の後のスペースは無視してください。実際の表現に余白はありません。

ありがとう

4

2 に答える 2

1

少なくとも、文字クラスの使用方法[foo_bar]は間違っています。[foo_bar]いずれか 1 回だけ一致できf,o,b,a,r,_ます。そして、あなたはマッチングを試みていないようです/。最初の式には正規表現の区切り文字がありません。sed は区切り文字として使用していると想定しますが^、 のように対応する区切り文字がありませんs^find^replace^g

これはうまくいくようです:

sed 's!<foo_bar>[^&]*</foo_bar>!!g' input
于 2013-03-05T08:00:10.740 に答える
0

これはうまくいくかもしれません(GNU sed):

sed -r 's/&\s*lt;(foo_bar&)gt;[0-9]+<\/\1\s*gt;//g' file
于 2013-03-05T08:35:08.080 に答える