shell字串的擷取的問題:
一、linux shell 擷取字元變數的前8位,有方法如下:
substr 「$a」 1 8
$a|awk 『』
$a|cut -c1-8
$a$a|dd bs=1 count=8 2>/dev/null
二、按指定的字串擷取
1、第一種方法: $ 從左向右擷取最後乙個string後的字串 $從左向右擷取第乙個string後的字串 $從右向左擷取最後乙個string後的字串 $從右向左擷取第乙個string後的字串 「*」只是乙個萬用字元可以不要
例子: $ myvar= $ echo $ $ echo $
2、第二種方法:$:擷取變數varible從n1到n2之間的字串。
可以根據特定字元偏移和長度,使用另一種形式的變數擴充套件,來選擇特定子字串。試著在 bash 中輸入以下行: $ exclaim=cowabunga $ echo $ cow $ echo $ abunga
這種形式的字串截斷非常簡便,只需用冒號分開來指定起始字元和子字串長度。
三、按照指定要求分割: 比如獲取字尾名 ls -al | cut -d 「.」 -f2
一、構造字串
直接構造 str_zero=hello str_first="i am a string" str_second='success'
重複多次 #repeat the first parm($1) by $2 times strrepeat()
舉例: str_repeat=`strrepeat "$user_name" 3` echo "repeat = $str_repeat"
二、賦值與拷貝
直接賦值與構造字串一樣 user_name=terry
從變數賦值 aliase_name=$user_name
三、聯接
直接聯接兩個字串 str_temp=`printf "%s%s" "$str_zero" "$user_name"` 使用printf可以進行更複雜的聯接
四、求長
求字元數(char) count_char=`echo "$str_first" | wc -m` echo $count_char
求位元組數(byte) count_byte=`echo "$str_first" | wc -c` echo $count_byte
求字數(word) count_word=`echo "$str_first" | wc -w` echo $count_word
五、比較
相等比較 str1 = str2
不等比較 str1 != str2
舉例: if [ "$user_name" = "terry" ]; then echo "i am terry" fi
小於比較 #return 0 if the two string is equal, return 1 if $1 < $2, else 2strcompare()
六、測試
判空 -z str
判非空 -n str
是否為數字 # return 0 if the string is num, otherwise 1 strisnum()
舉例: if [ -n "$user_name" ]; then echo "my name is not empty" fi
echo `strisnum "9980"`
七、分割
以符號+為準,將字元分割為左右兩部分使用sed 舉例: 命令 date --rfc-3339 seconds 的輸出為 2007-04-14 15:09:
47+08:00 取其+左邊的部分 date --rfc-3339 seconds | sed 's/+[0-9][0-9]:[0-9][0-9]//g' 輸出為 2007-04-14 15:
09:47 取+右邊的部分 date --rfc-3339 seconds | sed 's/.*+//g' 輸出為 08:
00以空格為分割符的字串分割使用awk 舉例: str_fruit="banana 0.89 100" 取第3欄位 echo $str_fruit | awk ''
八、子字串
字串1是否為字串2的子字串 # return 0 is $1 is substring of $2, otherwise 1 strissubstring()
在做shell批處理程式時候,經常會涉及到字串相關操作。有很多命令語句,如:awk,sed都可以做字串各種操作。
其實shell內建一系列操作符號,可以達到類似效果,大家知道,使用內部操作符會省略啟動外部程式等時間,因此速度會非常的快。
一、判斷讀取字串值
加入了「*」 不是意思是: 當然, 如果變數var已經被設定的話, 那麼其值就是$var.
[chengmo@localhost ~]$ echo $ ok [chengmo@localhost ~]$ echo $abc
[chengmo@localhost ~]$ echo $ ok [chengmo@localhost ~]$ echo $abc ok
如果abc 沒有宣告「=" 還會給abc賦值。
[chengmo@localhost ~]$ var1=11;var2=12;var3= [chengmo@localhost ~]$ echo $ var1 var2 var3 [chengmo@localhost ~]$ echo $ var1 var2 var3
$與$相似,可以通過變數名字首字元,搜尋已經定義的變數,無論是否為空值。
二、字串操作(長度,讀取,替換)
說明:"* $substring」可以是乙個正規表示式.
1.長度
[web97@salewell97 ~]$ test='i love china' [web97@salewell97 ~]$ echo $ 12
$得到字串長度
2.擷取字串
[chengmo@localhost ~]$ test='i love china' [chengmo@localhost ~]$ echo $ e china [chengmo@localhost ~]$ echo $ e china
$得到子字串
3.字串刪除
[chengmo@localhost ~]$ test='c:/windows/' [chengmo@localhost ~]$ echo $ c:/windows/ [chengmo@localhost ~]$ echo $ windows/ [chengmo@localhost ~]$ echo $
[chengmo@localhost ~]$ echo $ c:/windows [chengmo@localhost ~]$ echo $
$從字串開頭開始配備substring,刪除匹配上的表示式。
$從字串結尾開始配備substring,刪除匹配上的表示式。
注意:$,$ 分別是得到檔名,或者目錄位址最簡單方法。
4.字串替換
[chengmo@localhost ~]$ test='c:/windows/' [chengmo@localhost ~]$ echo $ c:\windows/ [chengmo@localhost ~]$ echo $ c:
\windows\
$ 乙個「/」表示替換第乙個,」//」表示替換所有,當查詢**現了:」/」**轉義符」\/」表示。
三、效能比較
在shell中,通過awk,sed,expr 等都可以實現,字串上述操作。下面我們進行效能比較。
[chengmo@localhost ~]$ test='c:/windows/'
[chengmo@localhost ~]$ time for i in $(seq 10000);do a=$;done;
real 0m0.173s user 0m0.139s sys 0m0.004s
[chengmo@localhost ~]$ time for i in $(seq 10000);do a=$(expr length $test);done;
real 0m9.734s user 0m1.628s
速度相差上百倍,呼叫外部命令處理,與內建操作符效能相差非常大。在shell程式設計中,盡量用內建操作符或者函式完成。使用awk,sed類似會出現這樣結果。
字串的處理
一 查詢 1 比較兩個字串大小 int comparison char a,char b 3 在主串中查詢乙個字元 二 替換 1 只替換第一次出現的乙個 2 要全部替換 三 複製 1 乙個串全部複製到另乙個空串中 2 乙個串中的一部分字元 子串 複製到另乙個空串中 3 把乙個串中的一部分字元 子串 ...
js字串方法
關鍵字 js字串方法 js js自帶函式 concat 將兩個或多個字元的文字組合起來,返回乙個新的字串。vara hello varb world varc alert c c hello,world indexof 返回字串中乙個子串第一處出現的索引 從左到右搜尋 如果沒有匹配項,返回 1。va...
js字串方法
關鍵字 js字串方法 js js自帶函式 concat 將兩個或多個字元的文字組合起來,返回乙個新的字串。vara hello varb world varc alert c c hello,world indexof 返回字串中乙個子串第一處出現的索引 從左到右搜尋 如果沒有匹配項,返回 1。va...