タグ内にコンテンツをインポートする必要があるファイルがあります。たとえば、
<Model500>
ABC
BCD
CDE
</Model500>
<Model500>
123
234
345
</Model500>
の内容を抽出したい。
<Model500>
</Model500>
「sed」を使用
だからそれは
ABC
BCD
CDE
123
234
345
使ってみました。
sed -e 's/<Model>\,/</Model>/p' file.txt
しかし、特殊文字で問題が発生しました。どんな提案がありますか?ありがとうございます。
ベストアンサー1
入力がXMLの場合は、XML関連ツールを使用するのが最善です。
方法1
sed正規表現にaを含める1つの方法は、/
バックスラッシュを使用してエスケープすることです。
$ sed -ne '/<Model500>/,/<\/Model500>/p' file.txt
<Model500>
ABC
BCD
CDE
</Model500>
<Model500>
123
234
345
</Model500>
この式は/<Model500>/,/<\/Model500>/
行の範囲を指定します。範囲は一致する行で始まり<Model500>
、一致する行で終わります<\/Model500>
。代替コマンドではなく範囲を指定するため、式はで始まりませんs
。
方法2
エスケープしたくない場合は、別の区切り文字を使用できます。
$ sed -ne '\|<Model500>|,\|</Model500>|p' file.txt
<Model500>
ABC
BCD
CDE
</Model500>
<Model500>
123
234
345
</Model500>
ここでは区切り記号として使用します|
。/
区切り記号以外の区切り文字が範囲で使用されたことを示すには、最初の区切り文字をエスケープする必要があります\|
。