bash:zcat与cat之间的差异,用于连接.gz文件

时间:2016-11-30 11:55:45

标签: bash

我的shell脚本出现了问题。在我的数据分析管道中,我需要连接多个gzip文件priore下游分析。这些gzip压缩文件成对出现,因此我需要将所有pair1连接在一起,并将所有pair2连接在一起。我的脚本如下所示:

for f in "${pair1_fqs[@]}"; do
    zcat "${f//\"/}" >> "$sampleID"_cat1.fq
done

for f in "${pair2_fqs[@]}"; do
    zcat "${f//\"/}" >> "$sampleID"_cat2.fq
done

问题是zcat和cat返回不同的结果:

zcat myfile.gz | wc -l
75896232
cat myfile.gz| wc -l
82322094

我想知道这里是否有人知道造成这种差异的原因是什么!

1 个答案:

答案 0 :(得分:1)

zcat将首先解压缩,然后管道wc -l将对行进行计数。

cat只传递从文件中读取的数据,然后通过管道将wc -l计算行数。

这就是为什么你看到不同的结果,在压缩文件上尝试cat,你会看到乱码。

现在在压缩文件上尝试zcat,您将看到您的数据。