125-批量重命名:如果会linux呢?

刘小泽写于19.6.13 和花花一起回家,一起回忆了花花的童年。小学已经倒闭了,但幼儿园还在,还有好多小孩在里面玩。还看了许多有意思的路边风景,在花花家炒了第一次菜

这次内容很简单,题目还是上次的:

简单回顾一下

假入现在有这些双端测序文件

# 根据下面的对应关系,首先新建这些gz文件出来,然后 shell脚本改名
# 比如 SRR6269851_1.fastq.gz 改名为 P3_DCIS_Exome_1.fastq.gz
# 以此类推

Library_Name    Run

P3_DCIS_Exome    SRR6269851

P4_DCIS_Exome    SRR6269852
P1_DCIS_Exome    SRR6269853
P2_DCIS_Exome    SRR6269854

P7_DCIS_Exome    SRR6269855
P5_DCIS_Exome    SRR6269856
P8_DCIS_Exome    SRR6269857
P6_DCIS_Exome    SRR6269858
P10_DCIS_Exome    SRR6269859
P9_DCIS_Exome    SRR6269860
P3_INV_Exome    SRR6269861

P4_INV_Exome    SRR6269862
P2_INV_Exome    SRR6269863
P1_INV_Exome    SRR6269864

P7_INV_Exome    SRR6269865
P8_INV_Exome    SRR6269866

P5_INV_Exome    SRR6269867

P6_INV_Exome    SRR6269868
P9_INV_Exome    SRR6269869

P10_INV_Exome    SRR6269870
P10_Norm_Exome    SRR6269871
P9_Norm_Exome    SRR6269872

P4_Norm_Exome    SRR6269873
P3_Norm_Exome    SRR6269874
P2_Norm_Exome    SRR6269875

P1_Norm_Exome    SRR6269876

P8_Norm_Exome    SRR6269877
P7_Norm_Exome    SRR6269878
P6_Norm_Exome    SRR6269879

P5_Norm_Exome    SRR6269880

思路

方法有很多,你会怎么考虑呢?

  • 首先用touch新建,结尾的id是有顺序的
  • 复制这个library-run两列表,发现其中是有空行的,需要去掉空行和首行无用信息
  • 结合shell的数组(array)可以获得表示列的变量
  • 最后利用mv进行替换
# 首先生成数据
for i in $(seq 51 80);do touch SRR62698${i}_1.fastq.gz;done
for i in $(seq 51 80);do touch SRR62698${i}_2.fastq.gz;done
# 构建array
sed 1d lib_run.txt|sed '/^$/d' | cut -f1>lib
sed 1d lib_run.txt|sed '/^$/d' | cut -f2>run
paste lib run >lib_run
# 循环替换,一行行读取
cat lib_run| while read i
do
	lib_run=($i)
	lib=${lib_run[0]}
	run=${lib_run[1]}
	mv ${run}_1.fastq.gz ${lib}_1.fastq.gz
	mv ${run}_2.fastq.gz ${lib}_2.fastq.gz
done

这里的重点就是数组的使用,推荐阅读:shell 13问(http://wiki.jikexueyuan.com/project/13-questions-of-shell/eight.html)

Yunze Liu
Yunze Liu
Bioinformatics Sharer

Co-founder of Bioinfoplanet(生信星球)

Next
Previous

Related