Shell學習筆記:#*、%*字符串掐頭去尾方法


一、語法
  在shell中可以通過#、%對字符串進行掐頭去尾操作,使用方法如下:
  • # 表示掐頭
  • % 表示去尾
  • 單個#或%表示最小匹配
  • 雙個$或%表示最大匹配
 二、例子1
  假設我們定義一個變量為:
filename=/dir1/dir2/dir3/my.file.txt

  可以通過${ }分別替換得到不同的值:

  • ${file#*/}:刪掉第一個 / 及其左邊的字符串:dir1/dir2/dir3/my.file.txt
  • ${file##*/}:刪掉最后一個 / 及其左邊的字符串:my.file.txt
  • ${file#*.}:刪掉第一個 . 及其左邊的字符串:file.txt
  • ${file##*.}:刪掉最后一個 . 及其左邊的字符串:txt
  • ${file%/*}:刪掉最后一個 / 及其右邊的字符串:/dir1/dir2/dir3
  • ${file%%/*}:刪掉第一個 / 及其右邊的字符串:(空值)
  • ${file%.*}:刪掉最后一個 . 及其右邊的字符串:/dir1/dir2/dir3/my.file
  • ${file%%.*}:刪掉第一個 . 及其右邊的字符串:/dir1/dir2/dir3/my
三、例子2
  用戶名/密碼@IP:str=user_name/"password"@192.168.100.100 8080
  • str2=${str##*/}
  • ip=${str2##*@}
  • username=${str%%/*}
  • password=${str2%%@*}
四、其他

1.截取子字符集

echo ${filename:0:5}:提取最左邊的5個字符,/dir1
echo ${filename:5:5}:提取第5個字符開始的連續5個字符,/dir2

2.替換字符

echo ${filename/dir/path}:將第一個dir替換成path,/path1/dir2/dir3/my.file.txt

echo ${filename//dir/path}:將全部dir替換成path,/path1/path2/path3/my.file.txt

3.長度計算

echo ${#filename}:返回變量值的長度


END 2018-08-20 16:37:52


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM