次の形式のファイルがあります。
title1
line
line
title2
line
line
line
title3
line
line
title2
下の部分を抽出してインデントを削除したいと思います。私は現在使用していますsed
(しかし、ORシェルスクリプトは私の状況に適していますが、残念ながらORのawk
ような言語ではありません):perl
python
sed -n -e '/^title2$/,/^[a-zA-Z]/ { /^[a-zA-Z]/ d ; s/^[ \t]*// ; p }'
しかし、これは最後に論理的に空白行を残します(論理的に空白やタブがある可能性があるため)。取り除きたいです。セクションには、保存する必要がある(または/^[ \t]*$/ d
その操作を実行する)他の論理的に空白行があります。したがって、私はこの結果が欲しい:
line
line
line
もう一度行うことができますsed -e '$d'
が、2番目のプロセスは避けることができるかどうか疑問に思います。
ベストアンサー1
私は予約されたスペースを使用し、最終的に
sed -ne '/^title2$/,/^[a-zA-Z]/ { /^title2$/ { n; h; b; } ; /^[a-zA-Z]/ d; H; x; s/[ \t]*//; P; s/.*\n//; x }'
これは私が興味のあるイベントを正しく処理しているようです。