字符串處理

  .字符串處理

v bash 的字符串處理工具:

字符串切片:

${#var}: 返回字符串變量var 的長度

例:

[root@lxc ~]# a="     "

[root@lxc ~]# echo ${#a}

5

[root@lxc ~]#

${var:offset}: 返回 字符串變量var 中從第offset 個字符后(不包括第offset個字符)的字符開始,到最后的部分,offset的取值0 到${#var}-1 之間(bash4.2 后,允許為負值)

例:

[root@lxc ~]# a=`echo {a..z} | tr -d " "`

[root@lxc ~]# echo $a

abcdefghijklmnopqrstuvwxyz

[root@lxc ~]# echo ${a:3}

defghijklmnopqrstuvwxyz

[root@lxc ~]#

${var:offset:number} :返回字符串變量var 中從第offset個字符后(不包括第offset個字符)的字符開始,長度為number的部分

例:

[root@lxc ~]# echo ${a:3:4}

defg

[root@lxc ~]#

${var: -lengh}:取字符串的最右側幾個字符

注意:冒號后必須有一空白字

例:

[root@lxc ~]# echo ${a: -2}

yz

[root@lxc ~]#

${var:offset: -lengh}:從最左側跳過offset 字符,一直取到字符串的最右側lengh個字符之前拋頭去尾取中間

例:

[root@localhost ~]# echo ${a:3: -10}

defghijklmnop

[root@localhost ~]#

基于模式取子串:

${var#*word}:其中word可以是指定的任意字符功能:自左而右,查找var 變量所存儲的字符串中,第一次出現的word,  刪除字符串開頭至第一次出現word 字符之間的所有字符

[root@lxc ~]# str=`getent passwd root`

[root@lxc ~]# echo $str

root:x:0:0:root:/root:/bin/bash

[root@lxc ~]# echo ${str#*root}

:x:0:0:root:/root:/bin/bash

${var##*word} :同上,不同的是,刪除的是字符串開頭至最后一次由word指定的字符之間的所有內容即貪婪模式的刪除

[root@lxc ~]# echo ${str##*root}

:/bin/bash

[root@lxc ~]#

${var%word*} :其中word 可以是指定的任意字符;

功能:自右而左,查找var變量所存儲的字符串中,第一次出現的word,刪除字符串最后一個字符向左至第一次出現word字符之間的所有字符;

例:

[root@lxc ~]# echo ${str%root*}

root:x:0:0:root:/

[root@lxc ~]#

${var%%word*} :同上,只不過刪除字符串最右側的字符向左至最后一次出現word 字符之間的所有字符;

例:

[root@lxc ~]# echo $str

root:x:0:0:root:/root:/bin/bash

[root@lxc ~]# echo ${str%%root*}

 

[root@lxc ~]#

查找替換:

${var/pattern/substi}:查找var 所表示的字符串中,第一次被pattern 所匹配到的字符串,以substi替換之

例:

[root@lxc ~]# echo ${str/root/wang}

wang:x:0:0:root:/root:/bin/bash

${var//pattern/substi}:查找var 所表示的字符串中,所有能被pattern 所匹配到的字符串,以substi 替換之

例:

[root@lxc ~]# echo ${str//root/wang}

wang:x:0:0:wang:/wang:/bin/bash

[root@lxc ~]#

${var/#pattern/substi}:查找var 所表示的字符串中,行首被pattern 所匹配到的字符串,以substi替換之

例:

[root@lxc ~]# echo ${str/#root/suwang}

suwang:x:0:0:root:/root:/bin/bash

[root@lxc ~]#

${var/%pattern/substi}:查找var 所表示的字符串中,行尾被pattern 所匹配到的字符串,以substi 替換之

例:

[root@lxc ~]# echo ${str/%bash/nologin}

root:x:0:0:root:/root:/bin/nologin

[root@lxc ~]#

查找并刪除:

${var/pattern} :查找var 所表示的字符串中,刪除第一次pattern 所匹配到的字符串

例:

[root@lxc ~]# echo ${str/root}

:x:0:0:root:/root:/bin/bash

[root@lxc ~]#

${var//pattern} :所有

例:

[root@lxc ~]# echo ${str//root}

:x:0:0::/:/bin/bash

[root@lxc ~]#

 

${var/#pattern} :行首

例:

[root@lxc ~]# echo ${str/#root}

:x:0:0:root:/root:/bin/bash

[root@lxc ~]#

${var/%pattern} :行尾

例:

[root@lxc ~]# echo ${str/%bash}

root:x:0:0:root:/root:/bin/

[root@lxc ~]#

字符大小寫轉換:

${var^^} :把var 中的所有小寫字母轉換為大寫

例:

[root@lxc ~]# echo ${str^^}

ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH

[root@lxc ~]#

${var,,} :把var 中的所有大寫字母轉換為小寫

例:

[root@lxc ~]# echo ${str,,}

root:x:0:0:root:/root:/bin/bash

[root@lxc ~]#

變量賦值

${var:-value} :如果var 為空或未設置,那么返回value ;否則,返回var 的值

例:

[root@lxc ~]# name="wang"

[root@lxc ~]# echo ${name:-"mdzz"}

wang

[root@lxc ~]# name=

[root@lxc ~]# echo ${name:-"mdzz"}

mdzz

[root@lxc ~]#

${var:+value} :如果var 不空,則返回value ,否則返回空值

例:

[root@lxc ~]# name=wang

[root@lxc ~]# echo ${name:+"mdzz"}

mdzz

[root@lxc ~]# name=

[root@lxc ~]# echo ${name:+"mdzz"}

 

[root@lxc ~]#

${var:=value} :如果var 為空或未設置,那么返回value ,并將value 賦值給var ;否則,則返回var 的值

例:

[root@lxc ~]# name=wang

[root@lxc ~]# echo ${name:="mdzz"}

wang

[root@lxc ~]# name=

[root@lxc ~]# echo ${name:="mdzz"}

mdzz

[root@lxc ~]#

${var:?error_info} :如果var為空或未設置 ,那么在當前終端打印error_info;否則返回var的值

例:

[root@lxc ~]# name=

[root@lxc ~]# echo ${name:?"valueisnull"}

-bash: name: valueisnull

[root@lxc ~]# name="wang"

[root@lxc ~]# echo ${name:?"valueisnull"}

wang

[root@lxc ~]#

 

 

原創文章,作者:changge,如若轉載,請注明出處:http://www.www58058.com/60643

(0)
changgechangge
上一篇 2016-11-24
下一篇 2016-11-24

相關推薦

  • Linux文本處理工具grep

    文件查看工具:cat     將[文件]或標準輸入組合輸出到標準輸出。               -A, –show-all       &nbs…

    Linux干貨 2016-08-10
  • linux安全機制與加密工具使用

    一、加密需要和安全機制 1.不加密流量的易受攻擊性 密碼/數據嗅探 數據操作 驗證操作 相當于郵寄明信片 2.不安全的傳統協議 telnet、FTP、POP3等等;不安全密碼http、sendmail、NFS等等;不安全信息Ldap、NIS、rsh等等;不安全驗證 3.NIST定義的安全屬性:美國國家標準與技術研究院 1) 保密性:  &…

    Linux干貨 2016-09-25
  • N25_第一周作業_leon

    第一周博客作業 1.       描述計算機的組成及其功能 計算機主要有五大部分組成:控制器;運算器;存儲器;輸入設備;輸出設備。   功能: 控制器:計算機的指揮系統。控制器通過地址訪問存儲器,從存儲器中取出指令,經譯碼器分析后,根據指令分析結果產生相應的操作控制信號作用于其他部件,使得…

    Linux干貨 2016-12-01
  • 【26期】Linux第九周學習小總結

    本周帶來的是慢慢的技術分享,有關于計劃任務的分享,涉及的知識點主要是at和cron,crontab的詳解,計劃任務可以將任何腳本、程序或文檔安排在某個最方便的時間運行,有利于我們的自動化運維,當某項任務多次重復,或者某個指定的時間點多次執行時,就可以使用計劃任務方便我們的工作。

    2017-09-09
  • N26 第六周作業

    總結vim編輯器的使用 Vim 模式    Vim 有六種基本模式    Normal mode                 Visual mode&nbs…

    Linux干貨 2017-02-01
  • 13 文件查找與壓縮

    locate find 壓縮命令 file-roller、compress/uncompress(.Z)、gzip/gunzip(.gz)、bzip2/bunzip2(.bz2)、xz/unxz(.xz) zip/unzip、tar locate 數據源 1)查詢系統上預建的文件索引數據庫      2)依賴于事先構建…

    Linux干貨 2016-08-18
欧美性久久久久