bash - 在 fastq 文件中,如何将序列头更改为文件名和唯一标识符?
问题描述
我正在处理条形码数据,我希望能够组合 fastq 文件并轻松分辨出读取的原始条形码。所以我试图将读取的名称更改为文件的名称(即barcode01.fastq)并在末尾附加一个唯一编号。我希望最终产品是这样的:
> barcode01_1
AAGTAGCCTTCGTTCAGTTACGTATTG
+
(&)(*),+*)'(5<64?CA?<;A=@D6
> barcode01_2
...
到目前为止,我使用 awk 有以下内容:
find . -type f -printf "/%P\n" | \
while read FILE ;
do
PREFIX=$(echo ">",${FILE##*/}"_");
awk -v PREFIX=$PREFIX '{
if (NR%4 == 1)
print PREFIX, ++i;
else
print $0
}' ${FILE} > ../${FILE}.fastq;
done
这会从子目录中获取所有 fastq 文件并制作标题> barcode01_ 1
,但我无法弄清楚如何摆脱空间。如果我删除和之间的PREFIX
逗号++i
:
find . -type f -printf "/%P\n" | \
while read FILE ;
do
PREFIX=$(echo ">",${FILE##*/}"_");
awk -v PREFIX=$PREFIX '{
if (NR%4 == 1)
print PREFIX ++i;
else
print $0
}' ${FILE} > ../${FILE}.fastq;
done
这使得标题只增加没有> barcode01_
部分的数字。
解决方案
++
将push up放在i
awk 上并不意味着 awk 会将其应用于i
而不是PREFIX
. 比较:
$ awk 'BEGIN{PREFIX="foo"; print PREFIX ++i}'
0
和:
$ awk 'BEGIN{PREFIX="foo"; print PREFIX (++i)}'
foo1
您的脚本还有其他几个问题,请将其复制/粘贴到http://shellcheck.net以了解其中一些问题,然后如果您需要其他问题的帮助,请发布一个新问题。
推荐阅读
- ios - 单击下拉菜单时如何调整tableView的高度?
- javascript - 覆盖函数参数值是一种好习惯吗?
- r - 将字符转换为日期
- python-3.x - 使用 psycopg2 将 python 字典更新为 postgres db 表
- javascript - 如何在html表中选择一行乘以2列并在第三列中显示结果
- django - Django编辑视图不显示
- python - 如何在 SQLAlchemy ORM 中查询多对多关系?
- spring - 当 userRepository 尝试在数据库中保存新用户时,我的验证器失败
- python - 提取 3 个连续字符和单词的 n-gram
- php - 如何在树视图结构中显示数组?