grepを使わずにgzファイルから検索キーワードの最初の数行を印刷する方法は?

grepを使わずにgzファイルから検索キーワードの最初の数行を印刷する方法は?

grep.gzファイルを使用せずに検索キーワードの前の行を印刷するにはどうすればよいですか?

ID:342N000390AAAAAAAA   07/14/15 10:26      (MV90    )
         * Register Data Imported
         * Warning - No Profile Data
     07/14/15 10:24  05/13/15 08:16       15    1   5956

No Profileキーワードを検索して342N000390AAAAAAAAAのID番号を印刷したいです。 3行目には必ずしも「プロファイルなし」は表示されません。どの行にも表示できます。私のオペレーティングシステムはHP-UXなので、多くのコマンドは使用できません。

ベストアンサー1

あなたが使用できるawk

gzcat file.gz | awk '/No Profile Data/{printf "%s\n%s\n%s\n", b, a, $0} {b=a;a=$0}'
  • gzcat(またはzcatLinuxの場合)gzipファイルの内容を標準出力として印刷します。
  • awk次に文字列を検索し、"No Profile Data"最初の2行を印刷します。

おすすめ記事