Text-Processing

有沒有透明結合zcat和cat的工具?

  • March 2, 2022

在處理日誌文件時,一些最終成為 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工作原理,並使用zcatcat取決於結果,以便我可以將輸出傳輸到grep例如?

注意:我知道我可以編寫腳本,但我想問是否已經有工具了。

嘗試使用-for --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 評論。

引用自:https://unix.stackexchange.com/questions/77296