每一種語言都有他獨自的字串操作方法,shell也一樣,下面以以例子的方式,簡單介紹常用方法。
1,取得字串長度
複製** **如下:
string=abc12342341 //等號二邊不要有空格
echo $ //結果11
expr length $string //結果11
expr "$string" : ".*" //結果11 分號二邊要有空格,這裡的:根match的用法差不多
2,字串所在位置
複製** **如下:
expr index $string '123' //結果4 字串對應的下標是從0開始的
這個方法讓我想起來了js的indexof,各種語言對字串的操作方法大方向都差不多,如果有語言基礎的話,學習shell會很快的。
3,從字串開頭到子串的最大長度
複製** **如下:
expr match $string 'abc.*3' //結果9
個人覺得這個函式的用處不大,為什麼要從開頭開始呢。
4,字串擷取
複製** **如下:
ech $ //2342341 從第4位開始擷取後面所有字串
echo $ //123 從第3位開始擷取後面3位
echo $ //123423 從第3位開始擷取後面6位
echo $ //2341 :右邊有空格 擷取後4位
echo $ //2341 同上
expr substr $string 3 3 & //123 從第3位開始擷取後面3位
上面的www.cppcns.com方法讓我想起了,php的substr函式,後面擷取的規則是一樣的。
5,匹配顯示內容
複製** **如下:
//例3中也有match和這裡的match不同,上面顯示的是匹配字元的長度,而下面的是匹配的內容
expr match $string '\([a-c]*[0-9]*\)' //abc12342341
expr $string : '\([a-c]*[0-9]\)' //abc1
expr $string : '.*\([0-9][0-9][0-9]\)' //341 顯示括號中匹配的內容
這裡括號的用法,是不是根其他的括號用法有相似之處呢,
6,擷取不匹配的內容
複製** **如下:
echo $ //42341 從$string左邊開始,去掉最短匹配子串
echo $ //abc12342341 這樣什麼也沒有匹配到
echo $ //42341 從$string左邊開始,去掉最短匹配子串
echo $ //41 程式設計客棧; 從$string左邊開始,去掉最長匹配子串
echo $ //abc12342 從$string右邊開始,去掉最短匹配子串
echo $ //abc12 從$string右邊開始,去掉最長匹配子串
這裡要注意,必須從字串的第乙個字元開始,或者從最後乙個開始,
7,匹配並且替換
複製** **如下:
echo $ 程式設計客棧//abc1bb42341 替換一次
echo $ //abc1bb4bb41 雙斜槓替換所有匹配
echo $ //bb12342341 #以什麼開頭來匹配,根php中的^有點像
echo $ //abc123423bb %以什麼結尾來匹配,根php中的$有點像
本文標題: 總結的7個shell字串操作方法和例項分享
本文位址:
shell字串總結
部落格主頁 1.計算字串長度 echo 2.按字元擷取字串 3.借助 對字串的切割 從右向左非貪婪匹配 從右向左貪婪匹配 從左向右非貪婪匹配 從左向右貪婪匹配 用法示例 ps 這裡僅僅只是乙個普通的點,而不是任意字元 root jjy q data tmp data url hotel.qunar....
shell字串操作
1,字串剪裁 file dir1 dir2 dir3 my.file.txt 我們可以用 分別替換獲得不同的值 拿掉第一條 及其左邊的字串 dir1 dir2 dir3 my.file.txt 拿掉最後一條 及其左邊的字串 my.file.txt 拿掉第乙個 及其左邊的字串 file.txt 拿掉最...
shell 字串操作
字串長度 expr length string expr string 從字串開始的位置匹配子串的長度 expr match string substring substring 是乙個正規表示式 expr string substring substring 是乙個正規表示式 索引expr ind...