zoukankan      html  css  js  c++  java
  • linux 基本命令___0003 字符串处理和yum安装软件的路径

    字符串变量的处理

    参考链接: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文件
  • 相关阅读:
    GIt如何进行代码管理
    GIt如何安装使用
    selenium+xpath在不同层级的写法
    Java+Selenium 常见问题QA
    Java+Selenium如何解决空指针
    python 发邮件
    用apscheduler写python定时脚本
    http断点续传的原理
    好的代码是重构出来的
    python写excel总结
  • 原文地址:https://www.cnblogs.com/adawong/p/7429864.html
Copyright © 2011-2022 走看看