目次
問題の背景
Linuxでは、テキストファイル内の特定のデータを特定する際、タグで挟むのが一般的ですが、シェルスクリプトを使用して抽出したい場合はどうすればよいでしょうか。
アイデア分析
sed を使用して特定のタグ間のデータ行を抽出する
テキストの例:
鬼ごっこ:
100
鬼ごっこ:
これはtag:タグで挟まれたペアのデータなので、データ100を抽出する必要があります。
このテキスト ファイルの名前が test.inp の場合、抽出スクリプトの例は次のようになります。
解決
cat test.inp | sed -n '/tag:/,/tag:/p'
ただし、このような場合はタグも抽出しますので、データのみが必要な場合は、提案されたコンテンツの最初と最後の 2 行を削除するだけで済みます。
cat test.inp | sed -n '/tag:/,/tag:/p' | awk 'NR>2{print line}{line=$0}' >result.out
この方法は、ラベルのペアに挟まれたデータ行を抽出するのに適しています。