在shell腳本中我們所有變量的存儲形式都是字符串。所以對于字符串的截取來說就變得十分重要了。
站在用戶的角度思考問題,與客戶深入溝通,找到合陽網(wǎng)站設(shè)計與合陽網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋合陽地區(qū)。而在shell腳本中,如果想要對一個字符串進(jìn)行指定的截取,有多種方法可以來完成:
如下舉例均用:STR="hello world my dear sister"
${STR#*char} 表示從左開始刪除第一個char左邊的所有字符,截取右邊的字符串
#!/bin/bash STR="hello world my dear sister" echo ${STR} CUT=${STR#* } echo ${CUT}
結(jié)果:
${STR##*char} 表示從左開始刪除最后一個char左邊的所有字符,截取右邊的字符串
將上例程序改為:
CUT=${STR##*/}
結(jié)果:
${STR%char*} 表示從右開始刪除第一個char右邊的所有字符,截取左邊的字符串
將上例程序改為:
CUT=${STR%/*}
同樣*可以看做是通配符,表示匹配右邊所有的字符刪除,保留左邊;
結(jié)果:
${STR%char*} 表示從右開始刪除最后一個char右邊的所有字符,截取左邊的字符串
將上例程序改為如下:
CUT=${STR%%/*}[object Object]
結(jié)果:
${STR:N:M} 表示從左邊第N個字符開始截取M個字符,不包括第N個字符
將上例程序改為:
CUT=${STR:3:8}
表示從左邊第3個字符開始截取后面的8個字符;如果N為0表示從第一個字符開始,但是包括第一個字符;
結(jié)果:
${STR:N} 表示從左邊第N個字符開始截取后面所有的字符,不包括第N個字符
將上面程序改為如下:
CUT=${STR:7}
表示從左邊第7個字符開始取后面的所有字符;
結(jié)果:
${STR:0-N:M} 表示從右邊第N個字符開始截取M個字符,包括第N個字符
將上例程序改為:
CUT=${STR:0-7:3}
表示從右邊開始數(shù)第7個字符開始,包括第七個字符本身,截取三個字符;
結(jié)果:
空格在行首的同時不輸出。其他字符是輸出的,大家可以下去試一試是否包含他本身
${STR:0-N} 表示從右邊第N個字符開始截取后面的所有字符,包括第N個字符
將上例程序改為:
CUT=${STR:0-7}
表示從右邊開始數(shù)第7個字符開始截取后面的所有字符;
結(jié)果:
空格不輸出。其他字符是輸出的,大家可以下去試一試是否包含他本身
${STR} | cut -c N 表示取從左邊開始數(shù)的第N個字符
示例代碼:
#!/bin/bash STR="hello world my dear sister" echo ${STR} echo ${STR} | cut -c 7
表示截取從左邊數(shù)第7個字符;
結(jié)果:
${STR} | cut -c N- 表示截取從左邊開始數(shù)的第N個字符往后的所有字符,包括第N個
更改如上程序:
echo ${STR} | cut -c 7-
表示從截取從左邊第7個字符開始剩下的所有字符;
結(jié)果:
${STR} | cut -c N-M 表示截取從左邊開始數(shù)的第N個字符到第M個字符之間的所有字符,包括第N個字符,但是不包括第M個字符
將程序改為如下:
echo ${STR} | cut -c 2-7
表示截取從左邊第2個字符到第7個字符之間的所有字符,包括第2個字符,不包括第7個字符;
結(jié)果:
${STR} | cut -c -N 表示截取從左邊開始數(shù)的第N個字符往前的所有字符,包括第N個字符
將程序改為如下:
echo ${STR} | cut -c -7
表示從左邊第7個字符開始數(shù)刪除后面所有的字符,截取前面的字符;
結(jié)果:
expr substr "${STR}" N M 表示從左邊第N個字符開始往后截取M個字符
示例程序:
#!/bin/bash STR="hello world my dear sister" echo ${STR} CUT=$(expr substr "${STR}" 3 5) echo $CUT
因?yàn)閑xpr是命令,所以上面的$()為命令替換,表示截取從左邊第3個字符開始往后截取5個字符;
結(jié)果:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。