I have a zipped text file a.zip I want to read the first 10 lines of it. Is it possible to do that without unzipping the whole file?
Asked
Active
Viewed 8,310 times
6
yukashima huksay
- 917
- 5
- 14
- 29
1 Answers
11
This simple pipe-script works for me:
zcat a.zip | head -n 10
Here:
zcat a.zip- unpacks zip-archive and sends its contents to standard output|pipeszcatoutput toheadinputhead -n 10- shows first 10 lines from its standard input
N0rbert
- 97,162
- 34
- 239
- 423
-
this unzips the whole file. – yukashima huksay Jan 04 '18 at 11:41
-
5@yukashima I'd guess it depends on the size of `a.zip`. When `head` terminates (after printing 10 lines) the `zcat` (which is `gzip -dc` behind the scenes) should receive a SIGPIPE and stop unzipping. – PerlDuck Jan 04 '18 at 11:53
-
@yukashimahuksay How do you know it unzips the whole file? I think all zip files keep the file list at the end of the archive, maybe it's just reading the whole file but not actually unzipping it – Xen2050 Jan 04 '18 at 12:38
-
I can confirm by example that it does not unzip the whole file as intended. `zcat verybigfile.zip | head -10` prints the first 10 lines _immediately_. A full unzip would take ca. 10 minutes. – cubic lettuce Aug 21 '20 at 14:55