ファイルの一部を選択

ファイルの一部を選択

次の形式のファイルがあります。

title1
        line
        line

title2
        line
        line

        line

title3
        line
        line

title2下の部分を抽出してインデントを削除したいと思います。私は現在使用していますsed(しかし、ORシェルスクリプトは私の状況に適していますが、残念ながらORのawkような言語ではありません):perlpython

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 }'

これは私が興味のあるイベントを正しく処理しているようです。

おすすめ記事