中国源码网

用Shell判断字符串包含关系的方法小结

  • 时间:2018-11-25 19:49 编辑:转载 来源:网络 阅读:398
  • 扫一扫,手机访问
摘要:用Shell判断字符串包含关系的方法小结前言现在每次分析网站日志的时候都需要判断百度蜘蛛是不是真实的蜘蛛,nslookup之后需要判断结果中是否包含“baidu”字符串以下给出一些shell中判断字符串包含的方法,来源程序员问答网站 stackoverf

用Shell判断字符串包含关系的方法小结前言

现在每次分析网站日志的时候都需要判断百度蜘蛛是不是真实的蜘蛛,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=$1

STRING_B=$2

if [[ ${STRING_A/${STRING_B}//} == $STRING_A ]]

  then

    ## is not substring.

    echo N

    return 0

  else

    ## is substring.

    echo Y

    return 1

  fi

这个也挺复杂

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【电脑网络|程序设计开发】常用正则表达式(2019-06-29 15:10)
【电脑网络|服务器应用】如何安装SQL Server 2008数据库(2019-06-10 09:36)
【电脑网络|服务器应用】Microsoft SQL Server 2012 64位 简体中文版安装教程(2019-06-10 09:26)
【电脑网络|服务器应用】Microsoft SQL Server 2014 官方简体中文版(32/64位)图文安装教程(2019-06-10 09:15)
【数码/游戏|手机游戏】权倾三国图文架设教程|权倾三国外网架设教程(2019-05-25 15:57)
【技术分享|linux】nginx配置目录列表访问权限(2019-05-18 09:07)
【电脑网络|常用软件】UltraCompare 18.0.0.62 中文绿色破解版本(好用的文件比较工具)(2019-05-03 16:11)
【数码/游戏|手机游戏】龙之谷手游架设|龙之谷外网架设图文教程|龙之谷修改教程(2019-04-18 19:09)
【数码/游戏|手机游戏】六大门派外网架设图文教程|六大门派修改图文教程(2019-04-08 16:45)
【数码/游戏|手机游戏】梦幻寻秦架设教程|梦幻寻秦图文架设教程(2019-04-08 12:19)

本站创立于2009年,已运行,感谢一路相伴