標準入力からデータブロックをコピー [閉じる]

標準入力からデータブロックをコピー [閉じる]

標準入力から入力を受け取るスクリプトを実行しています。この入力は非常に大きくなる可能性があるので、興味のある部分を一時ファイルに抽出したいと思います。

最初の行には「[cics]」が含まれており、その時点から次の「[」までのすべての内容を一時ファイルに書きたいと思います。

私はこれを行う方法を確認する前に、スクリプトでstdinを実際に使用したことがありませんでした。

答え1

以下を試してください。

awk 'BEGIN { RS="[" } { if (index($0, "cics]") == 1) print; }'

入力をフィルタリングします。文字は含まれません[

awk一時ファイルを使用するよりも出力を直接使用することをお勧めします。

答え2

以下を使用すると、簡単にこれを行うことができますsed

sed -n '/\[cics\]/,/\[/p' <<-END
    one
    two [cics]
    three
    four
    [five]
    six
    [seven]
    [cics] eight
    [nine]
    ten
    END
two [cics]
three
four
[five]
[cics] eight
[nine]

関連情報