第一種方法:利用鍵盤上#$%三個鍵之間的前後關係
${varible##*string} 從左向右截取最後一個string後的字符串
${varible#*string} 從左向右截取第一個string後的字符串
${varible%%string*} 從右向左截取最後一個string後的字符串
${varible%string*} 從右向左截取第一個string後的字符串
eg:
從末尾除去特定子字符串,不必使用"*"字符串
eg:
第二種方法:${varible:start:length}截取從下標start開始的length個字符串
eg:
得到字符串長度:echo ${#varible}
eg:
或者expr length "$varible"
實例:
運行之前,需要輸入命令chmod 755 mystr_cut.sh生成可執行文件
${1##*.}——>$1是傳給腳本的第一個命令行自變量,$2是傳給腳本的第二個命令行自變量,以此類推
第三種方法:運用工具cut
cut命令用於從文件或標準輸入中讀取內容並截取每一行的特定部分,發送到標準輸出
截取方式:
1.按字符位置
2.按字節位置
3.使用一個分隔符將一行分割成多個field,並提取指定的fields
cut命令有5個參數(-c,-b,-f,-d,-s)
截取方式:
-c:character
-b:byte
-f:field(需用 -d 參數指定一個分隔符,分隔符只能爲單個字符)
-s:suppress,表示如果行中沒有給出的分隔符,則不輸出該行
注:默認爲如果沒有分隔符則將該行原封不動輸出
eg:
1.
-c 實例
截取字符串中從第21到37的字符
2.
-f 實例
截取以空格爲分隔符的第三部分
截取以空格爲分隔符的第3到6部分
截取以 , (逗號)爲分隔符的第2部分
截取以 , (逗號)爲分隔符的第2部分之後的字符串
分隔符爲 ? ,因爲給出的字符串中沒有,所以原樣輸出
3.
-s實例
字符串中沒有給出的分隔符,則不輸出。與上面第2.的第三個截圖相對比
字符串中有 " " (空格)這個分隔符,則輸出符合要求的字符