6

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?

1 Answer 1

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
  • | pipes zcat output to head input
  • head -n 10 - shows first 10 lines from its standard input
4
  • this unzips the whole file. Jan 4, 2018 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 4, 2018 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 4, 2018 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. Aug 21, 2020 at 14:55

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .