linuxbashcompressionkshzcat

how to use zcat without the warning when using pipe


I'm trying to silent zcat warning through the option -q or 2>/dev/null so far nothing is working. I keep getting the same warning when a file name is missing. I'm looping through 100s of compressed files to extract a specific data. The idea is if zcat encounter a bad name or a missing file name, zcat will just stay quite and wait for the next cycle, but currently this is what I'm getting when using both options

zcat -q $ram | head -n1 or zcat $ram | head -n1 2>/dev/null

gzip: compressed data not read from a terminal. Use -f to force decompression.
For help, type: gzip -h

Any idea how to solve that or a faster way to read a .gz file with a silent feature that works?

Thanks


Solution

  • At present, you're redirecting only stderr from head; you're not redirecting from zcat at all. If you want to redirect stderr from zcat, then you need to put the redirection before the pipe symbol, like so:

    zcat $ram 2>/dev/null | head -n1