sedを使用して2つのタグ間のテキストを抽出する

sedを使用して2つのタグ間のテキストを抽出する

.xmlファイルに何百ものライブラリがあるため(ほぼ16,000行)、RHEL6システムで「groupinstall」を実行しようとする.xmlファイルがあります。

したがって、次の構造を使用して.xmlファイルに含まれるグループ名を抽出しようとしています。

<b>
<group>
<id> group name </id>
   <packages>
   ...
   </packages>
<id> group name 2 </id>
   <packages>
   ...
   </packages>
<id> etc... </id>
</group>
</b>

基本的にこれは私が試したものです。

sed -n '/<id>/,/<\/id>/p' test1.txt > test2.txt

.xmlファイルをtest1.txtにコピーしました。 test1.txtのグループ名をtest2.txtという2番目のファイルに抽出しようとしています。ただし、上記の行を使用すると、<id>最初のタグから最後のタグまでファイルのすべての内容を抽出します。</id>コードを複数回抽出するにはどうすればよいですか?

2番目の質問は: - ダウンロード専用のプラグインはyumグループで動作しますか?

ベストアンサー1

あなたに必要なものがもっと似ているようです

sed -n 's:.*<id>\(.*\)</id>.*:\1:p'

(あなたの例のように仮定し、そして<id>は同じ行にあり、</id>1行に1つだけあります)。<id>...</id>

または、XML認識ツールを使用してください。

xmlstarlet sel -t -v '//id' -n

おすすめ記事