$ i=5;j=9423483247234;$ echo $i | grep -q "^[0-9]$"$ echo $?0$ echo $j | grep -q "^[0-9]+$" $ echo $?0
$ c="A"; d="fwefewjuew"; e="fewfEFWefwefe"$ echo $c | grep -q "^[AZ]$"$ echo $d | grep -q "^[az]+$" $ echo $e | grep -q "^[a-zA-Z]+$"
$ ic="432fwfwefeFWEwefwef"$ echo $ic | grep -q "^[0-9a-zA-Z]+$"
$ echo " " | grep " "$ echo -e "t" | grep "[[:space:]]" #[[:space:]]會同時符合空格和TAB鍵$ echo -e " t" | grep "[[:space:]]"$ echo -e "t" | grep "" #為在鍵盤上按下TAB鍵,而不是字符
$ echo "[email protected]" | grep "[0-9a-zA-Z.]*@[0-9a-zA-Z.]"[email protected]
$ echo "http://news.lzu.edu.cn/article.jsp?newsid=10135" | grep "^http://[0-9a-zA-Z./=?]+$"http ://news.lzu.edu.cn/article.jsp?newsid=10135
說明:
/dev/null和
/dev/zero設備非常有趣,都猶如黑洞,什麼東西掉進去都會消失殆盡;後者還是個能源箱,總是能從那裡取到0,直到退出
[[:space:]]是
grep用於匹配空格或TAB 鍵字元的標記,其他標記請查幫助:
man grep
上面都是用
grep來進行模式匹配,實際上
sed,
awk都可用來做模式匹配,關於匹配中用到的正規表示式知識,請參考後面的相關資料
如果想判斷字串是否為空,可判斷其長度是否為零,可透過
test命令的
-z選項來實現,具體用法見
test命令,
man test
$ echo "tn" | grep "[[:print:]]"tn$ echo $?0$ echo -e "tn" | grep "[[:print:]]"$ echo $?1
除了組成字串的字元類型外,字串還有哪些屬性呢?組成字串的字元個數。
下面我們來計算字串的長度,也就是所有字元的個數,並簡單介紹幾種求字串中指定字元個數的方法。
即計算所有字元的個數,計算方法五花八門,擇其優著而用之:
$ var="get the length of me"$ echo ${var} # 這裡等同於$varget the length of me$ echo ${#var}20$ expr length "$var"20$ echo $var | awk '{ printf("%dn", length($0));}'20$ echo -n $var | wc -c20
$ echo $var | tr -cd g | wc -c2$ echo -n $var | sed -e 's/[^g]//g' | wc -c2$ echo -n $var | sed -e 's /[^gt]//g' | wc -c5
更多相關資訊請見《數值計算》的單字統計相關範例。
$ echo $var | wc -w5$ echo "$var" | tr " " "n" | grep get | uniq -c1$ echo "$var" | tr " " "n" | grep get | wc -l1
說明:
${}操作符在Bash 裡頭是一個“大牛”,能勝任相當多的工作,具體就看網中人的《Shell十三問》之
$(())與
$()還有
${}差在哪? "吧。
接下來討論如何控製字元在終端機的顯示。
$ echo -e "