1

これは少し複雑かもしれませんが、次のようになります: 次のような XML があるとします。

<a>
<b>000</b>
<c>111</c>
<b>222</b>
<d>333</d>
<c>444</c>
</a>

Mac で sed を使用して、次のような結果の XML を取得するにはどうすればよいですか。

<a>
<b>111 000</b>
<b>222</b>
<d>333</d>
<c>444</c>
</a>

基本的:

  • <b>...</b> の後に </c>...</c> が続く形式の 2 つの連続する行の一致
  • <c>...</c> の間の値を取り、その前の行の <b> の直後に (スペース文字を加えて) 配置します。
  • 2 行目を削除しています <c>...</c>

ありがとうございました。

これには sed が多すぎる場合は、Mac シェルから実行できる限り、何か他のことをアドバイスしてください。

4

2 に答える 2

0

Ruby は複数行のパターンをサポートします。

ruby -e 'print gets(nil).sub(/<b>([^\n]*)<\/b>\n<c>([^\n]*)<\/c>/m,"<b>\\2 \\1</b>")' file.txt

于 2013-04-19T21:57:36.417 に答える