Shell指令碼中字串的一些常用操作

2021-09-11 03:03:04 字數 1568 閱讀 3452

shell指令碼中字串的一些常用操作

字串長度

$可以獲得$的長度

例子:

string='how are you'

echo $  # 輸出結果為11

字串取子串

$ 在$中, 從位置$開始提取長度為$的子串

例子:

string='how are you'

echo $  # 索引從0開始,輸出結果為:are

echo $  # 省略長度,預設提取至最末尾,輸出結果為:are you

字串擷取(不匹配字元)

符號     

含**析

$從變數$的開頭, 刪除最短匹配$的子串

$ 從變數$的開頭, 刪除最長匹配$的子串

$ 從變數$的結尾, 刪除最短匹配$的子串

$ 從變數$的結尾, 刪除最長匹配$的子串

我們可以總結一下規律:

換句話來說,#總是表示左邊算起,%總是表示右邊算起;乙個符號表示最短匹配,兩個符號表示最長匹配。

我們可以利用該特點做一些有意義的事情,下面舉幾個例子:

# 定義字串

f=$(realpath 空間資料處理環境搭建.pdf)

# 輸出該字串變數的值,結果為/users/tanzhenyu/resources/books/python空間資料處理實戰/空間資料處理環境搭建.pdf

echo $f

# 第一件事情:提取檔名稱,輸出結果為:空間資料處理環境搭建.pdf

echo $

# 第二件事情:提取副檔名,輸出結果為:pdf

echo $

# 第三件事情:提取父目錄,輸出結果為:/users/tanzhenyu/resources/books/python空間資料處理實戰

echo $

當然,shell程式設計中我們也可以使用basename和dirname兩個命令分別提取檔名和父目錄名稱:

# basename提取當前檔案或者當前目錄名稱,輸出結果為:空間資料處理環境搭建.pdf

echo $(basename $f)

# dirname提取父目錄名稱,輸出結果為:/users/tanzhenyu/resources/books/python空間資料處理實戰

echo $(dirname $f)

子串替換

符號  

含**析

$  使用$, 來代替第乙個匹配的$substring

$使用$, 代替所有匹配的$substring

$ 如果$的字首匹配$, 那麼就用$來代替匹配到的$

$ 如果$的字尾匹配$, 那麼就用$來代替匹配到的$

注:$可以是乙個正規表示式.

例子:

# 把windows的路徑換成類unix的路徑

f='c:\windows\system32\cmd.exe'

echo $

# 輸出結果為:c:/windows/system32/cmd.exe

一些字串函式

1.right location,somenumber left location,somenumber select right location,2 from my contacts 返回location列中所有右數兩個字元 select left location,2 from my cont...

C中的一些字串操作

函式定義 char strchr const char s,char c 表頭檔案 include 函式說明 查詢字元 串s中首次出現字元c的位置,返回首次出現c的位置的指標 如果s中不存在c則返回null 表頭檔案 include 函式定義 int strncasecmp const char s...

js 中字串的一些方法

var txt 這是乙個字串 console.log typeof txt string string 物件方法 length 字串的長度 charat 返回在指定位置的字元。charcodeat 返回在指定的位置的字元的 unicode 編碼。concat 連線兩個或更多字串,並返回新的字串。fr...