2

データベースにインポートする前に、xmlドキュメントをフォーマットしようとしています。私には数百の行が<Image #1 File Name>Random string to find and replace</Image #1 File Name>あり、必要なことを実行するための正規表現の正しい検索と置換のパターンについて、私の人生の手がかりがありません。私はこれですべてのインスタンスを一致させることができました:

<Image #1 File Name>(.*?)</Image #1 File Name>

しかし、開いたタグと閉じたタグの間の空白をアンダースコアに置き換える必要があるパターンがわかりません。<Image #1 File Name>Random_string_to_find_and_replace</Image #1 File Name>

4

2 に答える 2

1
awk -F'<|>' '{gsub(/ /,"_",$3);print"<"$2">"$3"<"$4">"}' yourxmlfile

~OK、フィルタリングする前に、一致演算子で確認できます。

awk -F'<|>' '{if ($0 ~ /Image #1 File Name/) {gsub(/ /,"_",$3);print"<"$2">"$3"<"$4">"} else {print;}}' yourxmlfile
于 2012-08-15T22:05:02.950 に答える
0

次のトリックを提案します。

  1. <Image #1 File Name>and</Image #1 File Name>を、スペースを含まない 2 つの異なる特別な単語 (例MY_START_TAGand ) に置き換えMY_END_TAGます。
  2. すべてのスペースをアンダースコアに置き換えます。
  3. 最初のステップを元に戻します。

分裂とルール :)

于 2012-08-17T06:54:34.917 に答える