如何从gziped文件中获取前几行?我尝试了zcat,但是它抛出错误
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Answers:
zcat(1)
可以由compress(1)
或由提供gzip(1)
。在您的系统上,它似乎是compress(1)
-正在寻找带有.Z
扩展名的文件。
切换到gzip -cd
,zcat
您的命令应该可以正常运行:
gzip -cd CONN.20111109.0057.gz | head
说明
-c --stdout --to-stdout
Write output on standard output; keep original files unchanged. If there are several input files, the output consists of a sequence of independently compressed members. To obtain better compression, concatenate all input files before compressing
them.
-d --decompress --uncompress
Decompress.
zless file.gz | head
。zmore
仍然让您管破了。zless
似乎是要走的路。
在某些系统(例如Mac)上,您需要使用gzcat
。
如果需要连续范围的行,则一种选择可能是:
gunzip -c file.gz | sed -n '5,10p;11q' > subFile
其中第5行和第10行(包括两者)之间的行file.gz
被提取到new subFile
。有关sed
选项,请参阅手册。
如果需要,例如,第5行:
gunzip -c file.gz | sed -n '1~5p;6q' > subFile
提取第一行并跳过4行,然后选择第五行,依此类推。
该awk代码段不仅可以显示前几行,还可以显示您可以指定的范围。它还将添加行号,该行号是我调试在gzip压缩文件中指向某行的错误消息时所需的。
gunzip -c file.gz | awk -v from=10 -v to=20 'NR>=from { print NR,$0; if (NR>=to) exit 1}'
这是上面一个衬里中使用的awk代码段。在awk中,NR是一个内置变量(到目前为止找到的记录数),通常等同于行号。通过-v选项从命令行获取from和to变量。
NR>=from {
print NR,$0;
if (NR>=to)
exit 1
}
tar -xzOf some_huge_file.tar.gz | head