前言
現在每次分析網站日誌的時候都需要判斷百度蜘蛛是不是真實的蜘蛛,nslookup之後需要判斷結果中是否包含“baidu”字串
以下給出一些shell中判斷字串包含的方法,來來源程式員問答網站 stackoverflow 以及segmentfault。
方法一:利用grep尋找
strA="long string"strB="string"result=$(echo $strA | grep "${strB}")if [[ "$result" != "" ]]then echo "包含"else echo "不包含"fi
先列印長字串,然後在長字串中 grep 尋找要搜尋的字串,用變數result記錄結果
如果結果不為空白,說明strA包含strB。如果結果為空白,說明不包含。
這個方法充分利用了grep 的特性,最為簡潔。
方法二:利用字串運算子
strA="helloworld"strB="low"if [[ $strA =~ $strB ]]then echo "包含"else echo "不包含"fi
利用字串運算子 =~ 直接判斷strA是否包含strB。(這不是比第一個方法還要簡潔嗎!)
方法三:利用萬用字元
A="helloworld"B="low"if [[ $A == *$B* ]]then echo "包含"else echo "不包含"fi
這個也很easy,用萬用字元*號代理strA中非strB的部分,如果結果相等說明包含,反之不包含。
方法四:利用case in 語句
thisString="1 2 3 4 5" # 源字串searchString="1 2" # 搜尋字串case $thisString in *"$searchString"*) echo Enemy Spot ;; *) echo nope ;;esa
這個就比較複雜了,case in 我還沒有接觸到,不過既然有比較簡單的方法何必如此
方法五:利用替換
STRING_A=$1STRING_B=$2if [[ ${STRING_A/${STRING_B}//} == $STRING_A ]] then ## is not substring. echo N return 0 else ## is substring. echo Y return 1 fi
這個也挺複雜
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的協助,如果有疑問大家可以留言交流。