Linux下的文本排序让我很意外

2023-02-28 12:21:37 浏览数 (1)

我分享给大家的ngs流程里面经常是需要制作配置文件,里面的每个样品名字都有两个测序文件,因为目前都是双端测序,制作配置文件的过程其实就是Linux下的文本处理,代码如下所示:

代码语言:javascript复制
echo A_{1..25}_2.fq.gz |sed 's/s/n/g'|sort  >2
echo A_{1..25}_1.fq.gz |sed 's/s/n/g'|sort >1
paste 1 2 

这里就是{1..25}语法,是shell的扩展,shell扩展有以下几种,并按以下顺序处理,当然如果没找到匹配的扩展格式,那就不处理:

  • brace expansion 大括号({})扩展
  • tilde expansion ~字符扩展
  • parameter and variable expansion 参数和变量扩展
  • arithmetic expansion 算术扩展
  • command substitution 命令替换
  • process substitution 过程替换
  • word splitting
  • Filename Expansion 通配符扩展

以上扩展中,只有brace expansion,word splitting,filename expansion 三种扩展可以改变token个数,我们演示的{1..25}语法就是这个大括号扩展(brace expansion)的序列输出功能,其中两个点是进行序列输出,然后外面套的大括号是进行扩展。这个文本处理的结果如下所示:

代码语言:javascript复制
A_10_1.fq.gz    A_10_2.fq.gz
A_11_1.fq.gz    A_11_2.fq.gz
A_1_1.fq.gz     A_12_2.fq.gz
A_12_1.fq.gz    A_1_2.fq.gz
A_13_1.fq.gz    A_13_2.fq.gz
A_14_1.fq.gz    A_14_2.fq.gz
A_15_1.fq.gz    A_15_2.fq.gz
A_16_1.fq.gz    A_16_2.fq.gz
A_17_1.fq.gz    A_17_2.fq.gz
A_18_1.fq.gz    A_18_2.fq.gz
A_19_1.fq.gz    A_19_2.fq.gz
A_20_1.fq.gz    A_20_2.fq.gz
A_21_1.fq.gz    A_21_2.fq.gz
A_2_1.fq.gz     A_22_2.fq.gz
A_22_1.fq.gz    A_2_2.fq.gz
A_23_1.fq.gz    A_23_2.fq.gz
A_24_1.fq.gz    A_24_2.fq.gz
A_25_1.fq.gz    A_25_2.fq.gz
A_3_1.fq.gz     A_3_2.fq.gz
A_4_1.fq.gz     A_4_2.fq.gz
A_5_1.fq.gz     A_5_2.fq.gz
A_6_1.fq.gz     A_6_2.fq.gz
A_7_1.fq.gz     A_7_2.fq.gz
A_8_1.fq.gz     A_8_2.fq.gz
A_9_1.fq.gz     A_9_2.fq.gz

眼尖的小伙伴应该是已经看到了问题所在:

代码语言:javascript复制
A_1_1.fq.gz     A_12_2.fq.gz
A_12_1.fq.gz    A_1_2.fq.gz

A_2_1.fq.gz     A_22_2.fq.gz
A_22_1.fq.gz    A_2_2.fq.gz

出现了少量样品的排序混乱情况。

确实让人有点费解啊!

引用:
  • (公众号推文) linux命令行文本操作一文就够
  • (公众号推文)linux系统环境变量一文就够
  • (公众号推文)构建shell脚本一文就够
  • (公众号推文) conda管理生信软件一文就够
  • shell中的扩展(Expansions) https://opengers.github.io/linux/linux-shell-brace-parameter-command-pathname-expansion/
  • bash脚本的参数扩展 (parameter expansion) :https://www.ibm.com/developerworks/cn/linux/l-bash-parameters.html
  • shell通配符(wildcard):https://cloud.tencent.com/developer/article/1114732
  • type命令:https://man.linuxde.net/type
  • 字符串操作:https://my.oschina.net/aiguozhe/blog/41557

书籍 视频 习题配套练习

视频都在B站,大家把R语言和linux一起学习,数十万人观看的教学视频,你值得拥有:

书籍我推荐两本:

作业的话,力推我设计的5套习题,加油,在生物信息学的路上等大家!

  • 最低要求是完成我的 linux 20题 http://www.bio-info-trainee.com/2900.html
  • 其次完成生物信息学数据格式的习题(blast/blat/fa-fq/sam-bam/vcf/bed/gtf-gff),收集这些格式的说明书。
  • fasta和fastq格式文件的shell小练习 http://www.bio-info-trainee.com/3575.html
  • sam和bam格式文件的shell小练习 http://www.bio-info-trainee.com/3578.html
  • VCF格式文件的shell小练习 http://www.bio-info-trainee.com/3577.html

0 人点赞