實現方法有如下幾種:
expr substr 「$a」 1 8
echo $a|awk 『』
echo $a|cut -c1-8
echo $
expr $a : 『\(.\\).*』
echo $a|dd bs=1 count=8 2>/dev/null
(1)第一種方法:
從左向右擷取最後乙個string後的字串
$從左向右擷取第乙個string後的字串
$從右向左擷取最後乙個string後的字串
$從右向左擷取第乙個string後的字串
$「*」只是乙個萬用字元可以不要
請看下面的例子:
(2)第二種方法:
$:擷取變數varible從n1開始的n2個字元,組成乙個子字串。可以根據特定字元偏移和長度,使用另一種形式的變數擴充套件,來選擇特定子字串。試著在 bash 中輸入以下行:
$ exclaim=cowabunga$ echo $
cow$ echo $
abunga
這種形式的字串截斷非常簡便,只需用冒號分開來指定起始字元和子字串長度。
比如獲取字尾名
ls -al | cut -d 「.」 -f2小結:shell對應字串的處理方法很多,根據需求靈活選擇。
在做shell批處理程式時候,經常會涉及到字串相關操作。有很多命令語句,如:awk,sed都可以做字串各種操作。 其實shell內建一系列操作符號,可以達到類似效果,大家知道,使用內部操作符會省略啟動外部程式等時間,因此速度會非常的快。
一 語法12
34cut
[選項] 檔名
選項:
-f 列號:提取第幾列
-d 分隔符:按照指定分隔符分割列
[[ $name =~ xx ]];then
xx【#】代表 root許可權
【$】代表普通使用者
$@:表示所有指令碼引數的內容
$#:表示返回所有指令碼引數的個數。
$# 是傳給指令碼的引數個數
$
0
是指令碼本身的名字
$
1
是傳遞給該shell指令碼的第乙個引數
$
2
是傳遞給該shell指令碼的第二個引數
$@ 是傳給指令碼的所有引數的列表
$* 是以乙個單字串顯示所有向指令碼傳遞的引數,與位置變數不同,引數可超過
9
個
$$ 是指令碼執行的當前程序id號
$? 是顯示最後命令的退出狀態,
0
表示沒有錯誤,其他表示有錯誤
示例:編寫如下shell指令碼,儲存為test.sh
#!/bin/sh
echo "number:$#"
echo "argume:$@"
執行指令碼:
./test.sh first_arg second_arg
一、判斷讀取字串值
表示式 含義加入了「*」 不是意思是: 當然, 如果變數var已經被設定的話, 那麼其值就是$var.$變數var的值, 與$var相同
$如果var沒有被宣告, 那麼就以$default作為其值 *
$如果var沒有被宣告, 或者其值為空, 那麼就以$default作為其值 *
$如果var沒有被宣告, 那麼就以$default作為其值 *
$如果var沒有被宣告, 或者其值為空, 那麼就以$default作為其值 *
$如果var宣告了, 那麼其值就是$other, 否則就為null字串
$如果var被設定了, 那麼其值就是$other, 否則就為null字串
$如果var沒被宣告, 那麼就列印$err_msg *
$如果var沒被設定, 那麼就列印$err_msg *
$匹配之前所有以varprefix開頭進行宣告的變數
$匹配之前所有以varprefix開頭進行宣告的變數
二、字串操作(長度,讀取,替換)
表示式 含義說明:"*$substring」可以是乙個正規表示式.$$string的長度
$在$string中, 從位置$position開始提取子串
$在$string中, 從位置$position開始提取長度為$length的子串
$從變數$string的開頭, 刪除最短匹配$substring的子串
$從變數$string的開頭, 刪除最長匹配$substring的子串
$從變數$string的結尾, 刪除最短匹配$substring的子串
$從變數$string的結尾, 刪除最長匹配$substring的子串
$使用$replacement, 來代替第乙個匹配的$substring
$使用$replacement, 代替所有匹配的$substring
$如果$string的字首匹配$substring, 那麼就用$replacement來代替匹配到的$substring
$如果$string的字尾匹配$substring, 那麼就用$replacement來代替匹配到的$substring
【#】代表 root許可權
【$】代表普通使用者
awk擷取字段
file 期望每行刪除第二個 之前的內容,得到 isbctruncate 1 socialtime 1 nettype mobile isbctruncate 1 socialtime 1 nettype pc 我的處理方法是 awk f file 從第三個字元開始處理,並且以 為分隔符,因為最後乙...
oracle中substr函式(擷取字段)
所使用函式 substr string,start,length string 索要擷取的字串 start 從第幾個字元開始,0 1都是從頭開始 length 要擷取字元的長度,不寫預設擷取 到結束的字元 以上例項第一列是原欄位,第二列是從0開始,擷取長度2,第三列是1開始,擷取長度2,可以看出所擷...
sql中擷取字段資料的函式
今天遇到乙個做模糊查詢的問題,做模糊查詢時,要將做模糊查詢的資料第乙個數字給擷取掉。之前想在service中用for 迴圈 用startswith 做篩選,方案沒有通過,然後上網上搜取sql相關函式,找到了乙個方法 1 left s,n 函式返回字串s開始的最左邊n個字元。eg select lef...