用Shell判斷字串內含項目關聯性的方法小結_linux shell

來源:互聯網
上載者:User

前言

現在每次分析網站日誌的時候都需要判斷百度蜘蛛是不是真實的蜘蛛,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

這個也挺複雜

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的協助,如果有疑問大家可以留言交流。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.