我的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
我想知道这里是否有人知道造成这种差异的原因是什么!
答案 0 :(得分:1)
zcat
将首先解压缩,然后管道wc -l
将对行进行计数。
cat
只传递从文件中读取的数据,然后通过管道将wc -l
计算行数。
这就是为什么你看到不同的结果,在压缩文件上尝试cat
,你会看到乱码。
现在在压缩文件上尝试zcat
,您将看到您的数据。