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)