在linux中,我使用zcat列出一个.zip文件。在osx中,zcat似乎会自动在文件名后附加.Z。各种各样的人建议用gzcat代替zcat。但是,gzcat抱怨文件不是gzip格式!
'file'显示以下内容:
...压缩存档数据,至少提取v2.0即可
因此zcat或gzcat都无法在osx中运行,我该怎么办?
我在bash中有一个中等大小的脚本,该脚本使用zcat / gzcat,sed awk和其他基本实用程序来处理许多文件。我想在osx笔记本电脑上复制该环境,以便可以脱机工作。有什么一般建议可以避免这种痛苦吗?我希望这是一个相当常规的工作流程,因此必须已被其他人整理。
#1 楼
你是对的。这很烦人。$ zcat foo.txt.gz
zcat: can't stat: foo.txt.gz (foo.txt.gz.Z): No such file or directory
请尝试以下操作:
$ zcat < foo.txt.gz
asdfadsf
评论
在OS X上可以正常工作。
– Valerio Schiavoni
2015年1月25日14:18
显然我的答案是错误的。 Linux zcat将读取.zip和.Z文件。这里的问题不是stdin与命名文件之一,而是该程序的Linux维护者修改gzcat来读取大量不相关的文件类型。
–vy32
15年4月4日在12:54
我们如何将其传送到另一个进程?
–佩塔
17-10-9在8:29
使用|传送到另一个进程:cat
–vy32
17-10-11在4:24
这将至少在OSX上解决您的问题
– Jimh
17年11月14日在1:35
#2 楼
我知道这是一个老问题。但是,我从一个更旧的github线程中找到了一个解决方案。 。
$ gunzip -c 20150707_backup.sql.gz | mysql -u mysql_user -p
#3 楼
您可以例如使用自制软件安装Mac OS X的GNU utils(运行brew install coreutils gnu-sed
,安装gzcat
等人和gsed
)。这将为您提供每个命令的GNU实现。然后,为了使您的生活更轻松,请为每个命令创建一个变量(例如
sed=gsed
,并随后使用$sed
),或者简单地为它们添加别名(例如alias sed=gsed
)在您编写的任何脚本中。为了方便起见,我为此写了一个要点:gnu-tools-for-mac.sh。将这段代码放在(或包括在)脚本之上。使用GNU实现压缩和提取档案。我会说您不能混合使用OS X和GNU实现。
评论
您也可以将/ usr / local / opt / coreutils / libexec / gnubin添加到PATH,这将使它们在不带g前缀的情况下可用。
–bfontaine
2014年7月7日在17:56
#4 楼
我只是尝试一下,发现一些非常有趣的东西!对于gz
文件,我们应该在Mac OS上运行gzcat
。给您一个错误。解决方案2
将文件输入到
gzcat /path/to/file.gz
,它将起作用。 br /> 我希望这会有所帮助!
#5 楼
Mac OS X版本的gzip(1)
不支持读取zip文件。从手册页:此版本的gzip还能够解压缩使用
compress(1)
或bzip2(1)
压缩的文件。但是,Linux(GNU )版本。gunzip
当前可以解压缩由gzip
,zip
,compress
,compress -H
或pack
创建的文件。适用于Mac OS X的gzip;您可以通过网络搜索找到这些内容。这可能是阻力最小的路径。评论
搜索网络和安装新软件绝不是阻力最小的途径。
–vy32
17-10-11在4:25
#6 楼
有趣的是,当执行bash
-script bash somescript.sh
时,我遇到了同样的问题,该脚本在其中执行了带有gzcat
的for循环。但是请尝试在somescript.sh
-script ...中进行以下操作: /> zcat < file.txt.gz
...一无所有...
但是我还使用了对目录的引用:
brew install coreutils
哪个被解释为
brew reinstall coreutils
,显然在gunzip -c file.txt.gz
的SOMEDIR="~/DIR1/DIR2/DATA"
-script内不起作用。可行:~/DIR1/DIR2/DATA
哪个被解释为
bash
。我不知道为什么-我不是专业的macOS-BASH技术人员-但它与我的原始代码配合使用。 ..在我的macOS
脚本中。也许对某人有用。
#7 楼
代替zcat filename.gz | grep "hello"
使用
gunzip -c filename.gz | grep "hello"
评论
如果是Zip存档数据,则不是gzip格式!@MichaelHampton我可以在Linux上运行zcat。 zcat和gzcat都不能在osx上运行。那么我该如何解决呢?我是否可以安装另一套可以在linux和osx上运行的实用程序?这些脚本是我自己的,因此我可以更改它们(尽管我想使它们保持简单)。我也同时控制着linux / osx环境,因此我也可以在两者上进行简单的安装。
我不会说这很常规。我通常使用zip处理zip文件,而不使用gzip。