Shell-Script
壓縮文件上的記錄計數和 cksum
有一個gz格式的40GB文件。我想以未壓縮格式查找此文件的記錄數和 cksum。我的一種方法是:
- 使用 gunzip 解壓文件
- 對解壓文件使用 wc、cksum 命令
- 使用 gzip 再次壓縮文件。
這種方法的問題是解壓縮和壓縮文件將花費大量時間。可能在 30-40 分鐘左右。另一種方法可能是使用 zcat 來計算記錄數和 cksum
- zcat |wc -l
- zcat |校驗和
這種方法可能需要更少的時間,但在同一個文件上使用 zcat 兩次。有更好的方法嗎?可能正在使用一個命令來查找記錄計數和 cksum?
您可以使用
tee
和 bash 的程序替換:$ zcat foo.gz | tee >(md5sum >&2) | wc 6f869e2acc27a0330b10d9ffa6655e7b - 36568 45710 2743552
這將文件解壓縮一次,將解壓縮的數據
tee
作為輸入文件傳遞給該文件,該文件md5sum
被告知將其輸出列印到標準錯誤(因此不會被 擷取| wc
),然後我們還將輸出傳遞給wc
.
由於您似乎沒有磁碟空間問題,因此最簡單的方法是將文件解壓縮為一個臨時文件,然後在該文件上執行您的兩個命令。完成後,刪除臨時文件。
gunzip -c file.gz >tmpname wc -l tmpname cksum tmpname rm tmpname
如果您願意,可以替換
gunzip -c
為。zcat