0

Windows 用の GNU sed 4.2.1 実装を実行していますが、sed の経験はありません。

次の形式の行を含む xml ファイルがあります。

<field level="document" name="Title" value="Pericles" />

各行を次のように変換する必要があります。

<entry key="cm:Title">Pericles</entry>

何時間にもわたって多くのことを試しましたが、引用符の問題は解決されましたが (quote-backslash-quote-quote)、文字 '>' スラッシュより大きい、文字より小さいと問題が発生します。

「>」は他の文字として扱われるべきですよね?しかし、いいえ、この実装はファイルのリダイレクトを想定しているようです。

バックスラッシュ、キャレットなどを使用しようとしましたが、ほとんどそこにいますが、失敗します。

また、Unix のいくつかのサンプルが Windows で失敗していることに気付きました。Windows は別の実装ですか、それとも OS と関係がありますか?

誰もが Windows で sed を使用していて、私を助けることができますか?

4

2 に答える 2

1

xmlstarletxmlの解析は、などのツールを使用するとはるかに簡単になります。

そうは言っても、などのUnixツールでこれを試すことができます。sedawk

GNU sed

sed -r '/^<field/s/.*name="([^"]+)".*value="([^"]+)".*/<entry key="cm:\1">\2<\/entry>/' file.txt

GNU awk

awk '/^<field/ { for (i=1; i<=NF; i++) { if ($i ~ /^name=/) { name = substr($i, 7) } if ($i ~ /^value=/) { value = substr($i, 8, length($i) - 8) } }  printf "<entry key=\"cm:%s>%s</entry>\n", name, value }' file.txt

結果:

<entry key="cm:Title">Pericles</entry>
于 2012-09-23T05:28:20.900 に答える
1

これは古い投稿であることを認識しています。これを探している人に役立つかもしれません。一重引用符の代わりに二重引用符を使用する

sed -e "s/ text with > / /g" は、Cygwin sed を使用して cmd.exe で機能します。

于 2016-03-21T16:44:15.397 に答える