字符串变量的处理

参考链接:SHELL字符串处理技巧

计算字符串的字符数量: ${#str}

str="xxx-Lane1_S2_L001_R1_trim.fastq"

echo $str
### xxx-Lane1_S2_L001_R1_trim.fastq echo ${#str}
### 31

删除VALUE字符串中以分隔符“.”匹配的右边字符,保留左边字符: ${str%.*}${str%%.*}

str2=`ls xxx-Lane1_S2_L001_R1_trim.fastq.tar.gz`

echo ${str2%.*} #单次匹配
### xxx-Lane1_S2_L001_R1_trim.fastq.tar echo ${str2%%.*} #多次匹配
### xxx-Lane1_S2_L001_R1_trim

删除VALUE字符串中以分隔符“.”匹配的左边字符,保留右边字符: ${str#*.}${str##*.}

str2=`ls xxx-Lane1_S2_L001_R1_trim.fastq.tar.gz`

echo ${str2#*.}
### fastq.tar.gz echo ${str2##*.}
### .gz

用NEW子串替换str字符串中匹配的OLD子串: ${str/OLD/NEW}${str//OLD/NEW}

str2=`ls xxx-Lane1_S2_L001_R1_trim.fastq.tar.gz`

echo ${str2/tar.gz/bz}
### xxx-Lane1_S2_L001_R1_trim.fastq.bz echo ${str3//_/|}
### xxx-Lane1|S2|L001|R1|trim.fastq.tar.gz

“*”表示通配符,用于匹配字符串将被删除的字串
非贪婪匹配:

  • “%”表示从右向左匹配;
  • “#”表示从左向右匹配;
  • “/”表示替换

贪婪匹配:

  • “%%”表示从右向左匹配;
  • “##”表示从左向右匹配;
  • “//”表示替换


从str字符串的左边开始中截取子串: ${str:OFFSET}${str:OFFSET:LENGTH}

str2=`ls xxx-Lane1_S2_L001_R1_trim.fastq.tar.gz`

echo ${str2:4:8}
### Lane1_S2 echo ${str2:4}
### Lane1_S2_L001_R1_trim.fastq.tar.gz

从str字符串的右边开始中截取子串: ${str:0-OFFSET}${str:0-OFFSET:LENGTH}

str2=`ls xxx-Lane1_S2_L001_R1_trim.fastq.tar.gz`

echo ${str2:4:8}
### Lane1_S2 echo ${str2:0-6}
### tar.gz


下例中,WORD可以为一个字符串,也可以为一个变量。当为变量时,需要用“$”引用该变量。

var="xxx-Lane1_S2_L001_R1_trim.fastq.tar.gz"
word="yyy"
str="" # 1. ${VALUE:-WORD}:当变量未定义或者值为空时,返回值为WORD的内容,否则返回变量的值。
echo ${str:-$word}
### yyy echo ${var:-$word}
### xxx-Lane1_S2_L001_R1_trim.fastq.tar.gz # 2. ${VALUE:=WORD}:当变量未定义或者值为空时,返回WORD的值的同时并将WORD赋值给VALUE,否则返回变量的值。
echo ${str:=$word}
### yyy
echo $str #此时str的值也发生了改变
### yyy echo ${var:=$word}
### xxx-Lane1_S2_L001_R1_trim.fastq.tar.gz # 3. ${VALUE:+WORD}:当变量已赋值时,其值才用WORD替换,否则不进行任何替换。
echo ${str:+$word}
### echo ${var:+$word}
yyy # 4. ${VALUE:?MESSAGE}:当变量已赋值时,正常替换。否则将消息MESSAGE送到标准错误输出(若此替换出现在SHELL程序中,那么该程序将终止运行)。
echo ${str:?"warning"}
### bash: str: warning echo ${var:?"warning"}
### xxx-Lane1_S2_L001_R1_trim.fastq.tar.gz



yum安装软件的路径

以安装BEDTools为例

#
sudo yum install BEDTools rpm -q BEDTools
#BEDTools-2.15.0-1.el6.x86_64 rpm -qa |grep BEDTools
#BEDTools-2.15.0-1.el6.x86_64 rpm -ql BEDTools-2.15.0-1.el6.x86_64
# /usr/bin/annotateBed
# /usr/bin/bamToBed
# /usr/bin/bed12ToBed6
# /usr/bin/bedToBam
# /usr/bin/bedToIgv
# /usr/bin/bedpeToBam
# /usr/bin/bedtools
# /usr/bin/closestBed
# /usr/bin/clusterBed
# /usr/bin/complementBed
# /usr/bin/coverageBed
# /usr/bin/fastaFromBed
# /usr/bin/flankBed
# /usr/bin/genomeCoverageBed
# /usr/bin/getOverlap
# /usr/bin/groupBy
# /usr/bin/intersectBed
# /usr/bin/linksBed
# /usr/bin/maskFastaFromBed
# /usr/bin/mergeBed
# /usr/bin/multiBamCov
# /usr/bin/multiIntersectBed
# /usr/bin/nucBed
# /usr/bin/pairToBed
# /usr/bin/pairToPair
# /usr/bin/shuffleBed
# /usr/bin/slopBed
# /usr/bin/sortBed
# /usr/bin/subtractBed
# /usr/bin/tagBam
# /usr/bin/unionBedGraphs
# /usr/bin/windowBed
# /usr/bin/windowMaker
# /usr/share/BEDTools
# /usr/share/BEDTools/data
# /usr/share/BEDTools/data/knownGene.hg18.chr21.bed
# /usr/share/BEDTools/data/rmsk.hg18.chr21.bed
# /usr/share/BEDTools/genomes
# /usr/share/BEDTools/genomes/human.hg18.genome
# /usr/share/BEDTools/genomes/human.hg19.genome
# /usr/share/BEDTools/genomes/mouse.mm8.genome
# /usr/share/BEDTools/genomes/mouse.mm9.genome
# /usr/share/doc/BEDTools-2.15.0
# /usr/share/doc/BEDTools-2.15.0/LICENSE
# /usr/share/doc/BEDTools-2.15.0/README.rst
# /usr/share/doc/BEDTools-2.15.0/RELEASE_HISTORY

RPM

rpm 全名是 “RedHat Package Manager”,简称则为RPM。
RPM默认安装路径

  • /etc 设置文件放置的目录
  • /usr/bin 可执行文件
  • /usr/lib 程序使用的动态函数库
  • /usr/share/doc 基本的软件使用手册与帮助文档
  • /usr/share/man man page文件

linux 基本命令___0003 字符串处理和yum安装软件的路径的更多相关文章

  1. 解决方法:CentOS7用yum安装软件显示错误:cannot find a valid baseurl for repo: base/7/x86_64

    在Linux学习中,发现使用yum安装软件出现以下的错误: 百度了各种方法,很多人也发现光是修改REBOOT=yes也没用,多次进行挂载.修改网卡配置文件.重置IP地址.重启网络.创建又删除配置文件的 ...

  2. Red Hat Enterprise Linux Server(RHEL) yum安装软件时This system is not registered with RHN. RHN support will be disabled. 的解决方法(转)

    新安装了redhat6.5.安装后,登录系统,使用yum update 更新系统.提示: This system is not registered to Red Hat Subscription M ...

  3. linux小白成长之路2————yum安装火狐浏览器

    1.使用终端: CentOS左上角:应用程序>收藏>终端  2.使用root权限安装软件: 输入:sudo -i 输入密码(上篇安装linux虚拟机时设定的登录密码,也是超级管理员密码) ...

  4. Linux之保留yum安装软件后的RPM包

    yum安装软件很方便,但是下载下来的rpm包在安装后默认会被删除掉: 如果希望保留yum安装的软件包该如何做呢? 设置方法: 将/etc/yum.conf里对应的keepcache参数改为1即可,然后 ...

  5. linux rpm yum 安装 软件

    rpm 安装: 1.rpm包的了解:  rpm  安装  升级  删除 rpm -ivh  ****.rpm   安装 rpm -Uvh  ****.rpm  升级 rpm -e name    删除 ...

  6. Linux - yum 安装软件时被 PackageKit 锁定

    问题描述 yum 安装软件的时候报错 sudo yum install netease-cloud-music 已加载插件:fastestmirror, langpacks /var/run/yum. ...

  7. CentOS中yum安装软件时报错:No package XXX available

    yum 安装软件时,报错:No package XXX available. [root@localhost ~]# yum -y install redis Loaded plugins: fast ...

  8. yum install错误 系统环境:Oracle Linux5.4 在通过yum安装软件时出现以下错误:

    1.yum配置文件 1 [root@rh168 yum.repos.d]# cat yum.repo  2 [base] 3 name=Oracle linux  4 baseurl=file:/// ...

  9. CentOS下成功挂载xxxxxDVDx.iso并使用yum安装软件

    CentOS下成功挂载xxxxxDVDx.iso并使用yum安装软件 **不断尝试,终能到达彼岸** 测试环境为Win7 32位,VirtualBOx4.2.16+CentOS6.5,可分别到virt ...

随机推荐

  1. VS2010程序打包操作(结合图片详细讲解)

     附视频教程:http://www.cnblogs.com/mengdesen/archive/2011/06/14/2080312.html 1.  在vs2010 选择“新建项目”----“其他项 ...

  2. python序列中添加高斯噪声

    def wgn(x, snr): snr = 10**(snr/10.0) xpower = np.sum(x**2)/len(x) npower = xpower / snr return np.r ...

  3. 【BZOJ4704】旅行 树链剖分+可持久化线段树

    [BZOJ4704]旅行 Description 在Berland,有n个城堡.每个城堡恰好属于一个领主.不同的城堡属于不同的领主.在所有领主中有一个是国王,其他的每个领主都直接隶属于另一位领主,并且 ...

  4. javamail 发送邮件demo(文字与附件)

    package com.get.one; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multip ...

  5. delphi ----寻找控件,以字符串类型的名称控件

    vari :Integer;beginfor i := 1 to 10 do(FindComponent('Edit'+inttostr(i)) as TEdit).Text := inttostr( ...

  6. kafka-docker----(how to setup http proxy in container??)

    https://github.com/wurstmeister/kafka-docker environment: KAFKA_ADVERTISED_HOST_NAME: 10.10.160.243 ...

  7. 阻塞IO、非阻塞IO、同步IO、异步IO等

    https://www.cnblogs.com/zingp/p/6863170.html 阅读目录 1 基础知识回顾 2 I/O模式 3 事件驱动编程模型 4 select/poll/epoll的区别 ...

  8. mysql几种引擎和使用场景

    https://blog.csdn.net/cool_wayen/article/details/79585277 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建. ...

  9. 【python】-- 类的创建、__new__、__metaclass___

    类的创建 前面的随笔都是关于类的知识,通过类创建对象,那这个类到底是怎么产生的呢? 1. 传统创建类 class Foo(object): def __init__(self,name): self. ...

  10. Python计算地图上两点经纬度间的距离

    处理地图数据时,经常需要用到两个地理位置间的距离.比如A点经纬度(110.0123, 23.32435),B点经纬度(129.1344,25.5465),求AB两点之间的距离.我们可以用haversi ...