linux中字符串截取

linux字符串截取

Linux 的字符串截取很有用,有八种方法。


  1. 假设有变量 var=https://www.omicsclass.com/123.htm

    1. # 号截取,删除左边字符,保留右边字符。

    echo ${var#*//}

    其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符

    即删除 http://

    结果是 :www.omicsclass.com/123.htm

    2. ## 号截取,删除左边字符,保留右边字符。

    echo ${var##*/}

    ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符

    即删除 https://www.omicsclass.com/

    结果是 123.htm

    3. %号截取,删除右边字符,保留左边字符

    echo ${var%/*}

    %/* 表示从右边开始,删除第一个 / 号及右边的字符

    结果是:https://www.omicsclass.com

    4. %% 号截取,删除右边字符,保留左边字符

    echo ${var%%/*}

    %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符

    结果是:http:

    5. 从左边第几个字符开始,及字符的个数

    echo ${var:0:5}

    其中的 0 表示左边第一个字符开始,5 表示字符的总个数。

    结果是:http:

    6. 从左边第几个字符开始,一直到结束。

    echo ${var:7}

    其中的 7 表示左边第8个字符开始,一直到结束。

    结果是 :www.omicsclass.com/123.htm

    7. 从右边第几个字符开始,及字符的个数

    echo ${var:0-7:3}

    其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。

    结果是:123

    8. 从右边第几个字符开始,一直到结束。

    echo ${var:0-7}

    表示从右边第七个字符开始,一直到结束。

    结果是:123.htm

    注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)


  2.    总结

    描述的有点儿不容易懂,看了好久才勉强明白 ## %%。

    #、## 表示从左边开始删除。一个 # 表示从左边删除到第一个指定的字符;两个 # 表示从左边删除到最后一个指定的字符。

    %、%% 表示从右边开始删除。一个 % 表示从右边删除到第一个指定的字符;两个 % 表示从左边删除到最后一个指定的字符。

    删除包括了指定的字符本身。


    应用
    删除文件后缀得到文件名:  


    ls CytoscapeInput-nodes-*txt|while read a ;do o=${a%.*}; echo "$a $o";done
    
    
    CytoscapeInput-nodes-blue2.txt CytoscapeInput-nodes-blue2
    CytoscapeInput-nodes-coral1.txt CytoscapeInput-nodes-coral1
    CytoscapeInput-nodes-darkgreen.txt CytoscapeInput-nodes-darkgreen
    CytoscapeInput-nodes-darkorange2.txt CytoscapeInput-nodes-darkorange2
    CytoscapeInput-nodes-darkseagreen4.txt CytoscapeInput-nodes-darkseagreen4
    CytoscapeInput-nodes-darkslateblue.txt CytoscapeInput-nodes-darkslateblue
    CytoscapeInput-nodes-grey.txt CytoscapeInput-nodes-grey
    CytoscapeInput-nodes-honeydew1.txt CytoscapeInput-nodes-honeydew1
    CytoscapeInput-nodes-indianred3.txt CytoscapeInput-nodes-indianred3
    CytoscapeInput-nodes-lavenderblush2.txt CytoscapeInput-nodes-lavenderblush2
    CytoscapeInput-nodes-lavenderblush3.txt CytoscapeInput-nodes-lavenderblush3
    CytoscapeInput-nodes-lightblue4.txt CytoscapeInput-nodes-lightblue4
    CytoscapeInput-nodes-lightcoral.txt CytoscapeInput-nodes-lightcoral
    CytoscapeInput-nodes-lightcyan1.txt CytoscapeInput-nodes-lightcyan1
    CytoscapeInput-nodes-lightslateblue.txt CytoscapeInput-nodes-lightslateblue
    CytoscapeInput-nodes-mediumpurple1.txt CytoscapeInput-nodes-mediumpurple1
    CytoscapeInput-nodes-mediumpurple2.txt CytoscapeInput-nodes-mediumpurple2
    CytoscapeInput-nodes-orangered1.txt CytoscapeInput-nodes-orangered1
    CytoscapeInput-nodes-orangered3.txt CytoscapeInput-nodes-orangered3
    CytoscapeInput-nodes-paleturquoise.txt CytoscapeInput-nodes-paleturquoise
    CytoscapeInput-nodes-pink4.txt CytoscapeInput-nodes-pink4
    CytoscapeInput-nodes-plum.txt CytoscapeInput-nodes-plum
    CytoscapeInput-nodes-sienna4.txt CytoscapeInput-nodes-sienna4
    CytoscapeInput-nodes-skyblue4.txt CytoscapeInput-nodes-skyblue4
    CytoscapeInput-nodes-thistle2.txt CytoscapeInput-nodes-thistle2
    CytoscapeInput-nodes-thistle.txt CytoscapeInput-nodes-thistle
    命令看不懂可看:shell编程:https://www.omicsclass.com/article/1006
    或者视频教学:生物信息入门到精通必修基础课:linux系统使用biolinux搭建生物信息分析环境linux命令处理生物大数据

  • 发表于 2018-08-20 10:54
  • 阅读 ( 3056 )
  • 分类:linux

0 条评论

请先 登录 后评论
omicsgene
omicsgene

生物信息

698 篇文章

作家榜 »

  1. omicsgene 698 文章
  2. 安生水 347 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 82 文章
  6. 红橙子 78 文章
  7. rzx 74 文章
  8. CORNERSTONE 72 文章