gzipファイルから最初の数行を取得するにはどうすればよいですか?zcatを試しましたが、エラーが発生します
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
回答:
zcat(1)のいずれかcompress(1)またはによって提供できますgzip(1)。お使いのシステムでは、次のように見えますcompress(1)-.Z拡張子の付いたファイルを探しています。
のgzip -cd代わりにに切り替えるzcatと、コマンドは正常に機能するはずです。
 gzip -cd CONN.20111109.0057.gz | head
説明
   -c --stdout --to-stdout
          Write output on standard output; keep original files unchanged.  If there are several input files, the output consists of a sequence of independently compressed members. To obtain better compression, concatenate all input files before compressing
          them.
   -d --decompress --uncompress
          Decompress.
zless file.gz | head。zmoreまだ壊れたパイプが残っています。zless行く方法のようです。
                    Macでは<、zcatとともにを使用する必要があります。
zcat < CONN.20111109.0057.gz|head
場合はラインの連続した範囲の必要性があること、一つの選択肢は次のようになります。
gunzip -c  file.gz | sed -n '5,10p;11q' > subFile
ここで、の5行目と10行目(両方を含む)の間の行がfile.gz新しいに抽出されsubFileます。以下のためsedのオプションを参照してくださいマニュアル。
たとえば、すべての場合、5行目が必要です。
gunzip -c  file.gz | sed -n '1~5p;6q' > subFile
これは、1行目を抽出して4行をジャンプし、5行目を選択します。
このawkスニペットを使用すると、最初の数行だけでなく、指定できる範囲も表示できます。また、gzip圧縮されたファイルの特定の行を指すエラーメッセージをデバッグするために必要な行番号も追加されます。
gunzip -c file.gz | awk -v from=10 -v to=20 'NR>=from { print NR,$0; if (NR>=to) exit 1}'
上記のワンライナーで使用されているawkスニペットは次のとおりです。awkでは、NRは組み込み変数(これまでに見つかったレコードの数)であり、通常は行番号と同等です。fromおよびto変数は、-vオプションを介してコマンドラインから取得されます。
NR>=from {
   print NR,$0; 
   if (NR>=to) 
     exit 1
}
tar -xzOf some_huge_file.tar.gz | head