天天看點

linux 修改字段長度,Linux shell字元串操作(長度、查找、替換)詳解

http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html

在做shell批處理程式時候,經常會涉及到字元串相關操作。

有很多指令語句,如:awk,sed都可以做字元串各種操作。

其實shell内置一系列操作符号,可以達到類似效果,

大家知道,使用内部操作符會省略啟動外部程式等待時間,

是以速度會非常的快。

一、判斷讀取字元串值

表達式              含義

${var}              變量var的值,與$var相同

${var-DEFAULT}      如果var沒有被聲明,那麼就以$DEFAULT作為其值

${var:-DEFAULT}     如果var沒有被聲明,或者其值為空,那麼就以$DEFAULT作為其值

${var=DEAULT}       如果var沒有被聲明,那麼就以$DEFAULT作為其值

${var:=DEFAULT}     如果var沒有被聲明,或者其值為空,那麼就以$DEFAULT作為其值

${var+OTHER}        如果var聲明了,那麼其職就是$OTHER,否則就為NULL字元串

${var:+OTHER}       如果var被設定了,那麼其值就是$OTHER,否則就為NULL字元串

${var?ERR_MSG}      如果var沒被聲明,那麼就列印$ERR_MSG

${var:?ERR_MSG}     如果var沒被設定,那麼就列印$ERR_MSG

${!varprefix*}      比對之前所有以varprefix開頭進行聲明的變量

${[email protected]}      比對之前所有以varprefix開頭進行聲明的變量

二、字元串操作(長度、讀取、替換)

${#string}                       $string的長度

${string:position}               在$string中,從位置$position開始提取子串

${string:position:length}        在$string中,從位置$position開始提取長度為$length的子串

${string#substring}              從變量$string的開頭,删除最短比對$substring的子串

${string##substring}             從變量$string的開頭,删除最長比對$substring的子串

${string%substring}              從變量$string的結尾,删除最短比對$substring的子串

${string%%substring}             從變量$string的結尾,删除最長比對$substring的子串

${string/substring/replacement}  使用$replacement,來代替第一個比對的$substring

${string//substring/replacement} 使用$replacement,代替所有比對的$substring

${string/#substring/replacement} 如果$string的字首比對$substring,那麼就用$replacement來代替比對到的$substring

${string/%substring/replacement} 如果$string的字尾比對$substring,那麼就用$replacement來代替比對到的$substring