Shell字符串截取处理文件路径
在生信处理流程中,从最初的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字符串截取处理文件路径的更多相关文章
- 从字符串总分离文件路径、命名、扩展名,Substring(),LastIndexOf()的使用;替换某一类字符串,Replace()的用法
一:从字符串总分离文件路径.命名.扩展名,上图 二:代码 using System; using System.Collections.Generic; using System.ComponentM ...
- 使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者 file:// 的 URL 形式的文件路径来配置
mybatis – MyBatis 3 | 入门 http://www.mybatis.org/mybatis-3/zh/getting-started.html 从 XML 中构建 SqlSessi ...
- Linux 的shell 字符串截取很有用。有八种方法。
一 Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.linuxidc.com/123.htm 1 # 号截取,删除左边字符,保留右边字符. echo ${va ...
- Linux - Shell - 字符串截取
概述 简述 字符串 截取 背景 之前因为要给文件 批量重命名, 做过字符串截取 当时做好了, 也说了要写点东西 结果忘了 现在又要尝试批量 重命名 才发现之前的东西已经忘了好多 要是当时把博客写下来, ...
- Shell字符串截取
shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...
- 【转】shell字符串截取
shell字符串的截取的问题: 一.Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr “$a” 1 8 2.echo $a|awk ‘{print substr( ...
- Linux shell字符串截取与拼接
一 Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.linuxidc.com/123.htm 1 # 号截取,删除左边字符,保留右边字符. echo ${va ...
- shell 字符串截取
${expression}一共有9种使用方法. ${parameter:-word},如果parameter为空,则用word的值做parameter的缺省值 ${parameter:=word},在 ...
- WinFrom下连接字符串的数据库文件路径问题
一直以为连接字符串中的系统变量|DataDirectory|就是在ASP.NET中代替App_Data的绝对路径.原来在WinForm程序中也能用|DataDirectory|,不过指代的是exe文件 ...
随机推荐
- Data Structure Trie: suffix problem
http://www.geeksforgeeks.org/suffix-array-set-1-introduction/ http://www.geeksforgeeks.org/pattern-s ...
- leetcode 1049 Last Stone Weight II(最后一块石头的重量 II)
有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出任意两块石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x <= y.那么粉碎的可能结果如下: 如果 x == y,那么 ...
- leetcode 900. RLE Iterator
Write an iterator that iterates through a run-length encoded sequence. The iterator is initialized b ...
- windows下Scrapy爬虫框架环境搭建
1. 安装python 根据你的需求下载python安装包,安装python(本文基于python27)https://www.python.org/downloads/ 下载完安装默认安装路径, ...
- Codeforces 358D Dima and Hares:dp【只考虑相邻元素】
题目链接:http://codeforces.com/problemset/problem/358/D 题意: 有n个物品A[i]摆成一排,你要按照某一个顺序将它们全部取走. 其中,取走A[i]的收益 ...
- php 设置页面导航动态active类样式的添加
在用php制作项目中,一般都是把页头和页脚分离出来.页头导航在选中状态时会有一些样式,例如active等,当页面在首页时候,导航的首页也应该是active的样式,那么,怎么用php控制这些样式的添加和 ...
- struts2 框架 的环境搭建 与配置
一,Struts2简介: 1,来由:Struts(金属支架),在程序中表示起支撑作用的通用程序代码,Struts2是在Struts1框架的基础上融合了WebWork优秀框架升级得到的. 2,解释:St ...
- Git_学习_05_ 解决冲突
二.参考资料 1.使用git pull文件时和本地文件冲突怎么办? 2.git 冲突解决
- Java微信开发_03_使用测试号进行开发
今天进行自定义菜单的开发时,发现公众号没有自定义菜单的权限.于是想到用测试号,但微信服务器如何区分你要请求的是公众号还是测试号呢. 我们可以发现不同公众号的appID和appsecre是不同的,一对a ...
- JSP--常用标签
JSTL简介: JSTL是Java中的一个定制标签库集 实现了JSP页面中的代码复用,提高效率 可读性更强,方便前端查看与开发 环境搭建: JSTL标签和Servlet及JSP页面有比较严格的版本对应 ...