Sed:テキストファイルで次の行\ n記号を置き換える方法は?

Sed:テキストファイルで次の行\ n記号を置き換える方法は?

エラーを修正し、次の構造のXMLファイルで2番目のタグを2番目のタグ</time>に置き換える必要があります。</tags>

<time>20260664</time>
<tags>substancesummit ss</time>
<geo>asdsadsa</geo>
<time>20260664</time>
<tags>substancesummit ss</time>
<geo>asdsadsa</geo>

各項目には2つの閉じるタグがあるので、sedを使用してこれを実行しようとしています。</time>アイデアは</time><geo>に置き換えることです</tags><geo>

ところで途中に次の行記号があって使っているのに動作しませんね\n

sed 's/time>\n<geo>/tags>\n<geo>/g' old.xml > new.xml

ベストアンサー1

Sed は入力を 1 行ずつ処理するため、入力に改行文字が自発的に表示されません。あなたができることは;で終わる行を一時停止し、</time次の行で始まる前の行<geo>を置き換えることです。 (これはsedで「スペース予約」を使用して可能ですが、スペースを保存する必要がある場合はawkまたはperlに切り替えることをお勧めします。)

ただし、例の入力に応じてで始まる行に</time>変更できます。</tags><tags>

sed -e '/^<tags>/ s!</time>$!</tags>!'

おすすめ記事