% xzgrep harfbuzz /var/log/messages.0.bz2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^ % zcat /var/log/messages.0.bz2 | grep -e harfbuzz -e electron Oct 13 07:41:46 mowa219-gjp4-8570p-freebsd pkg[1984]: electron12 upgraded: 12.0.9_1 -> 12.0.9_2 Oct 13 07:44:15 mowa219-gjp4-8570p-freebsd pkg[3312]: harfbuzz upgraded: 2.9.1 -> 3.0.0 Oct 13 07:44:15 mowa219-gjp4-8570p-freebsd pkg[3312]: harfbuzz-icu upgraded: 2.9.1 -> 3.0.0 % zgrep harfbuzz /var/log/messages.0.bz2 Oct 13 07:44:15 mowa219-gjp4-8570p-freebsd pkg[3312]: harfbuzz upgraded: 2.9.1 -> 3.0.0 Oct 13 07:44:15 mowa219-gjp4-8570p-freebsd pkg[3312]: harfbuzz-icu upgraded: 2.9.1 -> 3.0.0 % xzcat /var/log/messages.0.bz2 xzcat: /var/log/messages.0.bz2: File format not recognized %
I think the problem is that the script xzgrep calls xz(1) with the -f flag by default. # create a test file man tcsh | bzip2 > tcsh.bz2 wc tcsh.bz2 224 1596 56890 tcsh.bz2 # with the -f flag, xz will return the compressed file if the format is unknown, and show no warnings xzcat -f tcsh.bz2 | wc 224 1596 56890 # xzgrep falls back to binary search in bz2 data /usr/bin/xzgrep -c . tcsh.bz2 ; echo $? 222 0 # without -f flag xzcat tcsh.bz2 | grep tcsh; echo $? xzcat: tcsh.bz2: File format not recognized 1