这篇文章主要给大家介绍了关于用Shell判断字符串包含关系的几种方法,其中包括利用grep查找、利用字符串运算符、利用通配符、利用case in 语句以及利用替换等方法,每个方法都给出了详细的示例代码与介绍,有需要的朋友们可以参考参考借鉴,下面来一起看看吧。
现在每次分析网站日志的时候都需要判断百度蜘蛛是不是真实的蜘蛛,nslookup之后需要判断结果中是否包含“baidu”字符串
先打印长字符串,然后在长字符串中 grep 查找要搜索的字符串,用变量result记录结果
利用字符串运算符 =~ 直接判断strA是否包含strB。(这不是比第一个方法还要简洁吗!)
这个也很easy,用通配符*号代理strA中非strB的部分,如果结果相等说明包含,反之不包含。
这个就比较复杂了,case in 我还没有接触到,不过既然有比较简单的方法何必如此
目标:本文提供一些关于如何搜索出指定目录或整个文件系统中那些包含指定单词或字符串的文件。
# 需要使用 root 权限来执行指定命令,可以直接使用 root 用户来执行也可以使用 sudo 命令
第一个例子让我们来搜索 /etc/ 目录下所有包含 stretch 字符串的文件,但不去搜索其中的子目录:
grep 的 -s 选项会在发现不存在或者不能读取的文件时隐藏报错信息。结果显示除了文件名之外,还有包含请求字符串的行也被一起输出了。
下面的命令会在 /etc/ 及其子目录中搜索包含 stretch 字符串的文件:
上面 grep 命令的案例中列出的是所有包含字符串 stretch 的文件。也就是说包含 stretches , stretched 等内容的行也会被显示。 使用 grep 的 -w 选项会只显示包含特定单词的行:
上面的命令都会产生多余的输出。下一个案例则会递归地搜索 etc 目录中包含 stretch 的文件并只输出文件名:
默认情况下搜索是大小写敏感的,也就是说当搜索字符串 stretch 时只会包含大小写一致内容的文件。
通过使用 grep 的 -i 选项,grep 命令还会列出所有包含 Stretch , STRETCH , StReTcH 等内容的文件,也就是说进行的是大小写不敏感的搜索。
grep 命令也可以只在指定文件中进行搜索。比如,我们可以只在配置文件(扩展名为f)中搜索指定的文本/字符串。 下面这个例子就会在 /etc 目录中搜索带字符串 bash 且所有扩展名为 .conf 的文件:
下面这个例子会搜索 /etc 目录中搜有包含字符串 stretch 的文件,但不包括 /etc/grub.d 目录下的文件:
例如下面命令会搜索 /etc 目录中不包含 stretch 的所有文件: