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

来源:互联网 发布:汽车租赁java 编辑:程序博客网 时间:2024/06/03 16:33

字符串变量的处理

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

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

str="xxx-Lane1_S2_L001_R1_trim.fastq"echo $str### xxx-Lane1_S2_L001_R1_trim.fastqecho ${#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.tarecho ${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.gzecho ${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.bzecho ${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_S2echo ${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_S2echo ${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}### yyyecho ${var:-$word}### xxx-Lane1_S2_L001_R1_trim.fastq.tar.gz# 2.  ${VALUE:=WORD}:当变量未定义或者值为空时,返回WORD的值的同时并将WORD赋值给VALUE,否则返回变量的值。echo ${str:=$word}### yyyecho $str #此时str的值也发生了改变### yyyecho ${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: warningecho ${var:?"warning"}### xxx-Lane1_S2_L001_R1_trim.fastq.tar.gz



yum安装软件的路径

以安装BEDTools为例

#sudo yum install BEDToolsrpm -q BEDTools#BEDTools-2.15.0-1.el6.x86_64rpm -qa |grep BEDTools#BEDTools-2.15.0-1.el6.x86_64rpm -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文件