テキストファイルで空の「タイトル」をフィルタリングする

テキストファイルで空の「タイトル」をフィルタリングする

私が次のことをすると仮定しましょう。

grep 'header\|error'

今、私は空のヘッダー「セクション」をすべて削除したいと思います。たとえば、次のような出力が必要です。

header 1
header 2
error a
error b
header 3
error c
header 4
header 5
error d

~になる

header 2
error a
error b
header 3
error c
header 5
error d

ベストアンサー1

入力が示されているのと同じであると仮定します。つまり、すべての入力行は「タイトル」または「エラー」の行であり、他に何もありません。

これは働きます:

$ cat test.sh
grep -B1 --no-group-separator ^error << EOF
header 1
header 2
error a
error b
header 3
error c
header 4
header 5
error d
EOF
$ ./test.sh 
header 2
error a
error b
header 3
error c
header 5
error d

スクリプトは、「error」で始まる各行を印刷し、その前の行を印刷します。

おすすめ記事