天天看點

shell字元串處理

如果$string 參數是"*"或" @ ", 那麼将會從$position位置開始提取 $length 個位置參數, 但是由于

可能沒有$length 個位置參數了, 那麼就有幾個位置參數就提取幾個位置參數.

expr substr $string $position $length

     在$string 中從$position開始提取$length 長度的子串.

expr match "$string" '\($substring\)'

     從$string 的開始位置提取$substring , $substring 是正規表達式.

expr "$string" : '\($substring\)'

expr match "$string" '.*\($substring\)'

     從$string 的結尾提取$substring , $substring 是正規表達式.

expr "$string" : '.*\($substring\)'

另: 關于子串削除,分享一個小例子:

當你需要構造檔案名的時候, 這個操作就顯得特别有用.

# touch test{1..5}.tar test{1..5}.tar.gz

# ls

test1.tar     test2.tar     test3.tar     test4.tar     test5.tar     test.sh

test1.tar.gz  test2.tar.gz  test3.tar.gz  test4.tar.gz  test5.tar.gz

# ./test.sh

remove test1.tar to new_1.tar

remove test2.tar to new_2.tar

remove test3.tar to new_3.tar

remove test4.tar to new_4.tar

remove test5.tar to new_5.tar

remove test1.tar.gz to new_6.tar.gz

remove test2.tar.gz to new_7.tar.gz

remove test3.tar.gz to new_8.tar.gz

remove test4.tar.gz to new_9.tar.gz

remove test5.tar.gz to new_10.tar.gz

#

[從書本上摘錄下來,對于字元串的處理,熟練運用了bash提供的這些操作,一般的應用還是都能處理好]

[“無他,唯手熟爾”]