本文首發於我的github部落格
本文記錄了作者使用bash過程中,為了解決去除字首字尾的問題而了解到的bash的字串操作,簡單來說
string:position
或者string:position:length
進行子串提取
string#pattern
進行最短匹配字首去除,string##pattern
進行最長匹配字首去除
string%pattern
進行最短匹配字尾去除,string%%pattern
進行最長匹配字尾去除
string/pattern/string
進行首個pattern
替換,string//pattern/string
進行全部pattern
替換
以上的pattern
指的都是wildcard而不是regular expression
有時在使用bash指令碼的時候,希望對字串做一些基本的操作,比如說去除字首字尾(去除副檔名,統一字首編號等),事實上,bash原生支援了許多字串操作
下面所有的pattern
指的都是bash wildcard而不是regular expression
使用string:position
提取從position
開始的子串
> string=
"text, dummy, text, dummy"
>
echo
$t, dummy, text, dummy
使用string:position:length
提取從position
開始,長度為length
的子串
> string=
"text, dummy, text, dummy"
>
echo
$t, d
使用string#pattern
進行最短匹配字首去除
> string=
"text, dummy, text, dummy"
>
echo $
, dummy, text, dummy
使用string##pattern
進行最長匹配字首去除
> string=
"text, dummy, text, dummy"
>
echo $
, dummy
使用string%pattern
進行最短匹配字尾去除
> string=
"text, dummy, text, dummy"
>
echo
$text, dummy, text, y
使用string%%pattern
進行最長匹配字尾去除
> string=
"text, dummy, text, dummy"
>
echo
$text,
使用string/pattern/string
進行首個pattern
的替換
> string=
"text, dummy, text, dummy"
>
echo
$text, dummy, text, dummy
使用string//pattern/string
進行全部pattern
的替換
> string=
"text, dummy, text, dummy"
>
echo
$text, dummy, text, dummy
想要得到對正規表示式匹配替換的支援的話,可以使用sed命令 bash中字串處理
得到長度 x abcd 方法一 expr length x 4 方法二 echo 4 方法三 expr x 4 expr 的幫助 string regexp anchored pattern match of regexp in string 查詢子串 expr index x b 2 expr i...
Bash中的字串處理
一 字串的替換 1 說明一下,這個操作中除了第乙個引數是變數外其它兩個都是字元 還有一點就是這個操作並不是把 變數1 中的字元替換了,詳見例子 例 str1 abcabcabc123abc echo 這裡的abc和aaa都是字串,而str1是變數,並且這個操作過後str1裡的字串長度不會減少,只是產...
BASH 中的字串處理
得到長度 x abcd 方法一 expr length x 4 方法二 echo 4 方法三 expr x 4 expr 的幫助 string regexp anchored pattern match of regexp in string 查詢子串 expr index x b 2 expr i...