Text-Processing
有沒有透明結合zcat和cat的工具?
在處理日誌文件時,一些最終成為 gzip 文件,
logrotate
而另一些則不是。所以當你嘗試這樣的事情時:$ zcat *
你最終得到一個命令行
zcat xyz.log xyz.log.1 xyz.log.2.gz xyz.log.3.gz
,然後是:gzip: xyz.log: not in gzip format
是否有一種工具可以獲取魔術字節,類似於
file
工作原理,並使用zcat
或cat
取決於結果,以便我可以將輸出傳輸到grep
例如?注意:我知道我可以編寫腳本,但我想問是否已經有工具了。
嘗試使用
-f
or--force
:zcat -f -- *
因為
zcat
只是一個執行的簡單腳本exec gzip -cd "$@"
有很長的選項可以轉化為
exec gzip --stdout --decompress "$@"
並且,根據
man gzip
(強調我的):*-f --force* 即使文件有多個連結也強制壓縮或解壓縮 或者對應的文件已經存在,或者壓縮的數據是 從終端讀取或寫入。*如果輸入數據不是格式 被 gzip 辨識,如果選項 --stdout 也給出,複製 輸入數據而不改變標準輸出:**讓 zcat 表現得像 cat**。*
還:
這樣我就可以將輸出通過管道傳輸到
grep
例如您可以
zgrep
為此使用:zgrep -- PATTERN *
儘管請參閱下面的 Stéphane 評論。