bash中的字串處理操作

2021-10-06 18:03:57 字數 2131 閱讀 2852

本文首發於我的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...