在生信处理流程中,从最初的fastq文件,经过分析处理后,会生成一堆的后续文件,如何在流程中合理的命名呢?

  通常在批处理模式中,我们会得到多个样本*.fastq(或*.fq、*.fastq.gz、*.fq.gz)路径名文件sample.txt。如下所示:

/home/yhwang/sample/sampe01_R1.trimmed.fastq.gz    /home/yhwang/sample/sample01_R2.trimmed.fastq.gz
/home/yhwang/sample/sampe02_R1.trimmed.fastq.gz /home/yhwang/sample/sample02_R2.trimmed.fastq.gz
/home/yhwang/sample/sampe03_R1.trimmed.fastq.gz /home/yhwang/sample/sample03_R2.trimmed.fastq.gz
/home/yhwang/sample/sampe04_R1.trimmed.fastq.gz /home/yhwang/sample/sample04_R2.trimmed.fastq.gz
/home/yhwang/sample/sampe05_R1.trimmed.fastq.gz /home/yhwang/sample/sample05_R2.trimmed.fastq.gz
/home/yhwang/sample/sampe06_R1.trimmed.fastq.gz /home/yhwang/sample/sample06_R2.trimmed.fastq.gz
/home/yhwang/sample/sampe07_R1.trimmed.fastq.gz /home/yhwang/sample/sample07_R2.trimmed.fastq.gz
/home/yhwang/sample/sampe08_R1.trimmed.fastq.gz /home/yhwang/sample/sample08_R2.trimmed.fastq.gz
...
/home/yhwang/sample/sampen_R1.trimmed.fastq.gz /home/yhwang/sample/samplen_R2.trimmed.fastq.gz

  上述,是一个多个双端*.fastq全路径文件sample.txt的内容,我们只需写好一个样本的分析流程,然后嵌套while循环,就可以实现批处理了。如何提取每行中的sample名称呢?shell中提供了多种字符串截取的功能,如下所示:

# 对于每一行
[yhwang@yhwang ~]$ line='/home/yhwang/sample/sampe01_R1.trimmed.fastq.gz /home/yhwang/sample/sample01_R2.trimmed.fastq.gz' # 获取sample名称
[yhwang@yhwang ~]$ sample=`basename ${line%%_*}`
[yhwang@yhwang ~]$ echo $sample
sample0

按指定的字符串截取

(1)第一种方法:

从左向右截取最后一个string后的字符串
${varible##*string}
从左向右截取第一个string后的字符串
${varible#*string}
从右向左截取最后一个string后的字符串
${varible%%string*}
从右向左截取第一个string后的字符串
${varible%string*}
“*”只是一个通配符可以不要

[yhwang@yhwang ~]$ variable="IP:180.97.33.107,port:80"
[yhwang@yhwang ~]$ echo "1:"${variable##*.}
1:107,port:80
[yhwang@yhwang ~]$ echo "2:"${variable#*.}
2:97.33.107,port:80
[yhwang@yhwang ~]$ echo "3:"${variable%%.*}
3:IP:180
[yhwang@yhwang ~]$ echo "4:"${variable%.*}
4:IP:180.97.3

(2)第二种方法:

${varible:n1:n2}:截取变量varible从n1开始的n2个字符,组成一个子字符串。可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。

[yhwang@yhwang ~]$ echo "5:"${variable:3:13}
5:180.97.33.107

参考资料

https://blog.csdn.net/longshenlmj/article/details/14123643

Shell字符串截取处理文件路径的更多相关文章

  1. 从字符串总分离文件路径、命名、扩展名,Substring(),LastIndexOf()的使用;替换某一类字符串,Replace()的用法

    一:从字符串总分离文件路径.命名.扩展名,上图 二:代码 using System; using System.Collections.Generic; using System.ComponentM ...

  2. 使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者 file:// 的 URL 形式的文件路径来配置

    mybatis – MyBatis 3 | 入门 http://www.mybatis.org/mybatis-3/zh/getting-started.html 从 XML 中构建 SqlSessi ...

  3. Linux 的shell 字符串截取很有用。有八种方法。

    一 Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.linuxidc.com/123.htm 1  # 号截取,删除左边字符,保留右边字符. echo ${va ...

  4. Linux - Shell - 字符串截取

    概述 简述 字符串 截取 背景 之前因为要给文件 批量重命名, 做过字符串截取 当时做好了, 也说了要写点东西 结果忘了 现在又要尝试批量 重命名 才发现之前的东西已经忘了好多 要是当时把博客写下来, ...

  5. Shell字符串截取

    shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...

  6. 【转】shell字符串截取

    shell字符串的截取的问题: 一.Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr “$a” 1 8 2.echo $a|awk ‘{print substr( ...

  7. Linux shell字符串截取与拼接

    一 Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.linuxidc.com/123.htm 1  # 号截取,删除左边字符,保留右边字符. echo ${va ...

  8. shell 字符串截取

    ${expression}一共有9种使用方法. ${parameter:-word},如果parameter为空,则用word的值做parameter的缺省值 ${parameter:=word},在 ...

  9. WinFrom下连接字符串的数据库文件路径问题

    一直以为连接字符串中的系统变量|DataDirectory|就是在ASP.NET中代替App_Data的绝对路径.原来在WinForm程序中也能用|DataDirectory|,不过指代的是exe文件 ...

随机推荐

  1. hd acm2025

    问题:平面上有n条折线,问这些折线最多能将平面分割成多少块? 思路:像这种平面被线段分割成几部分的问题,80%用递推解决,因为n条线段与(n-1)条线段能建立联系.   你可以作图观察一下,会发现新增 ...

  2. linux学习-文件打包与压缩

  3. 各数据库连接配置与maven依赖安装

    maven用的比较多,所以自己去捣鼓了一下:以下是关于数据库配置的一块,把相关的内容张贴出来,以备不时之需 //MySql 配置文件(maven):pom.xml <dependency> ...

  4. DIV CSS 笔记

    /*针对谷歌浏览器内核支持的CSS样式*/ <style type="text/css"> @media screen and (-webkit-min-device- ...

  5. MVC中使用showModalDialog

    1.mvc中使用模态对话框用于修改数据,如果第一次修改过后刷新页面,第二次修改时显示内容依然是第一次修改之前的,这里用js中的Math.Random()解决 Views: <%: Html.Ac ...

  6. Windows Server 2008 R2 备份与恢复详细实例

    Windows Server 2008 R2中Windows Server Backup备份与恢复 本实验是在虚拟机操作,因公司的需求,将备份存储到另一台服务器,于是我在现有linux备份服务器搭建了 ...

  7. L103

    Give everyday the chance to become the most beautiful day of your life.把每天都过成你生命中最美好的一天.competence 能 ...

  8. nodejs stream基础知识

    分类 nodejs 的 stream 有四种: Readable:可读流 Writable: 可写流 Duplex:双工流 Transform:转换流 Readable // _read方法是从底层系 ...

  9. SQL的CASE表达式用法

    case 表达式从SQL-92标准开始引入,因此是不依赖于具体的数据库技术,可提高SQL代码的可移植性. case表达式注意事项: 1. 统一各个分支返回数据类型,并保证各个when字句的排他性,因为 ...

  10. Android中高效的显示图片之一 ——加载大图

    在网上看了不少文章,发现还是官方文档介绍最详细,把重要的东西简单摘要出来.详细可看官方文档地址 ( http://www.bangchui.org/read.php?tid=9 ) . 在应用中显示图 ...