パターンの上に2行を印刷します。

パターンの上に2行を印刷します。

パターンが最初に表示される部分の上の行を含む、すべてのコンテンツを除くファイルの内容をどのように印刷しますか?

15行目のパターンが「^Previous」と仮定すると、1〜13行目を印刷したいと思います。

答え1

sedすべてを自分で行うことができます:

sed -n '$!N;/.*PATTERN.*/q;P;D' infile

簡単です。自動モードをオンにしてスライドウィンドウを使用して(NそしてDパターンスペースに常に2行あるように)、遭遇すると、quitはパターンスペースの最初の行を印刷してループを再開します。PATTERNP

gnu sed自動的に印刷されないため、Q自動モードをスキップできるため、短くなります。

sed  '$!N;/.*PATTERN.*/Q;P;D' infile

答え2

キスするのはどうですか?

sed '1,/^Previous/!d' file | head -n -2

関連情報