我正在尝试计算从照明排序开始的fastq文件中每次读取的长度,并将其输出到tsv或任何类型的文件中,这样我以后就可以查看该计数并计算每个文件的读取次数。因此,我需要循环处理文件并取出读取的每一行(每4行),然后获取其长度并将其存储为输出
num=2
for file in *.fastq
do
echo "counting $file"
function file_length(){
wc -l $file | awk '{print$FNR}'
}
for line in $file_length
do
awk 'NR==$num' $file | chrlen > ${file}read_length.tsv
num=$((num + 4))
done
done
目前,我所得到的都是$ file,没有其他输出,但是也没有错误
答案 0 :(得分:0)
您的脚本在语法和算法上均包含很多错误。请尝试shellcheck以查看问题所在。最多的问题将是$file_length
部分。
您可能要在此处调用函数file_length()
,但这仅仅是
一个未定义的变量,在for
循环中被评估为null。
如果您只想计算*.fastq
文件第4行的长度,
请尝试以下方法:
for file in *.fastq; do
awk 'NR==4 {print length}' "$file" > "${file}_length.tsv"
done
或者,如果您要将结果汇总到一个tsv文件中,请尝试:
tsvfile="read_lenth.tsv"
for file in *.fastq; do
echo -n -e "$file\t" >> "$tsvfile"
awk 'NR==4 {print length}' "$file" >> "$tsvfile"
done
希望这会有所帮助。