テキストを見つけてコピーしてファイルの次の行に挿入するにはどうすればよいですか?

テキストを見つけてコピーしてファイルの次の行に挿入するにはどうすればよいですか?

.xmlファイルを処理するスクリプトを作成しようとしています。要素を含むすべての行を見つけ<title>てコピーし、見つかった要素の後ろの次の行に貼り付け、要素の種類も変更する必要があります。ここに例があります。

オリジナル:

一部のテキスト
<title>テキスト 1</title>
一部のテキスト
<title>テキスト 2</title>
一部のテキスト

これは私が得なければならないでしょう:

一部のテキスト
<title>テキスト 1</title>
<description>テキスト 1</description>
一部のテキスト
<title>テキスト 2</title>
<description>テキスト 2</description>
一部のテキスト

sedまたはgrep(または他のツール)を使用して実行できますか?

ベストアンサー1

sed -E 's%<title>(.*)</title>%<title>\1</title>\n<desc>\1</desc>%g' file.xml宿題をしなければなりません。

もう少し説明すると、 -Eパラメータはsed拡張正規表現を使用するように指示するため、引用符を使用できます。通常、sed形式のsedに置き換えられますs/search/replace/g。検索テキストにスラッシュがあるため、sed の%代わりに/sed を使用してその部分を表示するので、検索テキストでスラッシュをバックスラッシュで隠す必要はありません。残りは、検索セクションのコードスニペットを\1参照する置換セクションを含む一般的な正規表現エントリです。(…)

おすすめ記事