UNIXに特定の行数の.gzファイルがある場合。unixを解凍せずに行を数える方法
UNIXに特定の行数の.gzファイルがある場合。unixを解凍せずに行を数える方法
回答:
ファイルがまだ圧縮されている場合、明らかに改行をカウントできません。
ただし、(解凍された)ファイルをディスクに書き込むことなく、ストリームに解凍し、そのストリーム内の改行をカウントできます。それは次のようになります:
zcat file.gz | wc -l
解凍と猫のzcat、ワードカウントのwc。詳細を知りたい場合は、両方のmanページを参照してください。
編集
zcatがない場合、zcatはの別名ですgunzip -c
。
gzip
とは異なるユニックスではcompress
、あなたが欲しいgzcat
。
これも動作しているようです-ファイル内の行末の数のgrep
zgrep -Ec "$" file.gz
wc -l
すぐに実行したい場合は、「pigz」(IIRCは「GZipの並列実装」の略)を使用することをお勧めします。同様の状況で、大量のgzipされたファイルの行数をカウントしたいのですが、これが私の解決策でした。
for x in *.gz; do unpigz -p 8 -c $x | wc -l && echo $x; done
これにより、8つのプロセッサを使用して、行数と、交互の行からカウントされるファイルが得られました。すぐに走りました!
for x in *.fastq.gz; do zcat "$x" | wc -l && echo $x; done
次のコマンドを使用します。
gzgrep -c $ filename.gz
このコマンドgzgrep
は、grep
gzip圧縮ファイルと同じように動作します。正規表現マッチングのために、その場でファイルを解凍します。
この場合-c
、一致する行数を出力するようにコマンドに指示すると、正規表現は$
すべての行またはファイルに一致するように行末に一致します。
最終結果はと同じですgzip -dc filename.gz | grep -c $
。
gzgrep
Solaris以外のシステム上で利用可能?