您的位置:首页 > 运维架构 > Linux

linux 基本命令___0003 字符串处理和yum安装软件的路径

2017-07-24 22:08 525 查看

字符串变量的处理

参考链接: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文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: