用Shell判断字符串包含关系的方法小结
前言
现在每次分析网站日志的时候都需要判断百度蜘蛛是不是真实的蜘蛛,nslookup之后需要判断结果中是否包含“baidu”字符串
以下给出一些shell中判断字符串包含的方法,来源程序员问答网站stackoverflow以及segmentfault。
方法一:利用grep查找
strA="longstring" 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的部分,如果结果相等说明包含,反之不包含。
方法四:利用casein语句
thisString="12345"#源字符串 searchString="12"#搜索字符串 case$thisStringin *"$searchString"*)echoEnemySpot;; *)echonope;; esa
这个就比较复杂了,casein我还没有接触到,不过既然有比较简单的方法何必如此
方法五:利用替换
STRING_A=$1 STRING_B=$2 if[[${STRING_A/${STRING_B}//}==$STRING_A]] then ##isnotsubstring. echoN return0 else ##issubstring. echoY return1 fi
这个也挺复杂
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。