0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍Shell判断字符串包含关系的几种方法

马哥Linux运维 来源:csdn 2023-05-12 15:58 次阅读

在 bash 脚本中,有不止一种检查子字符串的方法,我们今天介绍一些简单的例子,然后在分享一个常用的 bash 脚本。

我们在写 bash 脚本的时候,假如有一个字符串,我们想检查其中是否包含另一个子字符串,那这个时候需要怎样做呢?这里介绍Shell判断字符串包含关系的几种方法

1、通过grep来判断:

str1="abcdefgh"
str2="def"
result=$(echo $str1 | grep "${str2}")
if [[ "$result" != "" ]]
then
    echo "包含"
else
    echo "不包含"
fi

先打印长字符串,然后在长字符串中 grep 查找要搜索的字符串,用变量result记录结果,如果结果不为空,说明str1包含str2。如果结果为空,说明不包含。这个方法充分利用了grep 的特性,最为简洁。

2、字符串运算符

str1="abcdefgh"
str2="def"
if [[ $str1 =~ $str2 ]]
then
    echo "包含"
else
    echo "不包含"
fi

利用字符串运算符 =~ 直接判断str1是否包含str2。

3、利用通配符

str1="abcdefgh"
str2="def"
if [[ $str1 == *$str2* ]]
then
    echo "包含"
else
    echo "不包含"
fi

用通配符*号代理str1中非str2的部分,如果结果相等说明包含,反之不包含。

4、利用case in 语句

str1="abcdefgh"
str2="def"
case $str1 in 
    *"$str2"*) echo Enemy Spot ;;
    *) echo nope ;;
esac

5、利用替换

str1="abcdefgh"
str2="def"
if [[ ${str1/${str2}//} == $str1 ]]
    then
       echo "不包含"
    else
      echo "包含"
fi

注意下文中的用的是[[]]还是[]

Shell判断文件是否包含给定字符串

给定一个字符,比方说“Hello Weijishu”,查找相应文件中是否包含该字符。

方式1:grep

# grep -c 返回 file中,与str匹配的行数
grep -c str file




FIND_FILE="/home/linduo/test/Test.txt"
FIND_STR="Hello Weijishu"
# 判断匹配函数,匹配函数不为0,则包含给定字符
if [ `grep -c "$FIND_STR" $FIND_FILE` -ne '0' ];then
    echo "The File Has Hello Weijishu!"
    exit 0
fi 

方式2:cat、while、read组合使用。使用这种方式,要注意时while read 在子shell中运行。

FIND_FILE="/home/weijishu/test/Test.txt"
FIND_STR="Hello Weijishu"
cat $FIND_FILE| while read line
do
if [[ $line =~ $FIND_STR ]];then
    echo "The File Has Hello Weijishu!"
fi
done





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 字符串
    +关注

    关注

    1

    文章

    554

    浏览量

    20284
  • Shell
    +关注

    关注

    1

    文章

    358

    浏览量

    22957

原文标题:Shell判断是否包含给定字符串

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何判断字符串包含的是数字

    输入一个字符串,判断字符串中只有数字没有字母等其他字符..应该怎么 做??????跪求截程序图看看........
    发表于 09-14 19:08

    用labview一字符串输入(包含数字)如何变成输出纯字母类的新字符串

    想问一下,用labview一字符串输入(包含数字)如何变成输出纯字母类的新字符串 我想用公式节点去做,但要先把原字符串转换成数组吗?还是可
    发表于 10-19 00:23

    Linux Shell系列教程之Shell字符串用法

    Shell字符串用法Shell中的字符串可以用引号包起来,也可以不用引号。用引号的话可以用双引号,也可以用单引号。其单双引号的区别跟PHP相类似。接下来给大家
    发表于 08-29 16:01

    Python字符串的特点和修改字符串的常见四种方法

    Python中修改字符串几种方法
    发表于 02-26 16:52

    python判断是否包含的7种方法

    使用 count 的方法判断。只要判断结果大于 0 就说明子存在于字符串中。def is_in(full_str, sub_str):
    发表于 04-08 15:15

    字符串移位包含的问题解决方案

    问题:给定字符串s和t,判断是否字符串t能通过将s移位后的字符串包含方法一 最简单的
    发表于 11-29 10:05 967次阅读

    教你7个Python判断字符串是否包含子串的方法

    教你7个Python判断字符串是否包含子串的方法
    的头像 发表于 08-17 10:52 4867次阅读
    教你7个Python<b class='flag-5'>判断</b><b class='flag-5'>字符串</b>是否<b class='flag-5'>包含</b>子串的<b class='flag-5'>方法</b>

    C语言中字符串拷贝函数有几种方法

    strcpy,即string copy(字符串复制)的缩写。 是C语言标准库中实现字符串拷贝的一个函数。 各大公司笔试题最喜欢考的一道题,快来看看,你会几种方法? 问:你会如何实现这个函数
    的头像 发表于 03-12 14:16 4609次阅读

    如何利用Java判断一个字符串是否包含某个字符

    如何利用Java通过不同的方法判断一个字符串是否包含某个字符。 **2 ****方法**
    的头像 发表于 02-17 15:13 1184次阅读
    如何利用Java<b class='flag-5'>判断</b>一个<b class='flag-5'>字符串</b>是否<b class='flag-5'>包含</b>某个<b class='flag-5'>字符</b>

    C语言定义字符串几种方法

    C语言中定义字符串有哪些方法
    的头像 发表于 03-31 09:41 3150次阅读

    Python中检查字符串包含方法

    Python 有多种处理字符串方法。今天我们介绍如何检查一个字符串中是否包含另一个字符串
    的头像 发表于 05-14 16:02 1.4w次阅读

    Python 如何判断字符串是否包含子串

    方法 使用 字符串 对象的 find 方法,如果有找到子串,就可以返回指定子串在字符串中的出现位置,如果没有找到,就返回 -1 >> > "hello, python" . find
    的头像 发表于 11-02 10:55 323次阅读

    mysql字符串包含某个字符串

    将详尽、详实、细致地探讨MySQL中字符串包含的实现方法。 在MySQL中,可以通过使用内建函数和通配符来实现字符串包含的操作。下面将详细
    的头像 发表于 11-16 14:52 1607次阅读

    linux搜索文件里的字符串

    在Linux系统中,我们可以使用各种方法来搜索文件中的字符串。在本文中,我将为您详细介绍几种常用的方法和工具。让我们开始吧! grep命令
    的头像 发表于 11-23 10:20 632次阅读

    oracle判断字符串包含某个字符

    字符串操作是任何编程语言中都非常重要的一部分,Oracle数据库作为目前最常用的关系型数据库之一,也提供了丰富的字符串操作函数和方法。在本文中,我们将详细解析如何在Oracle中
    的头像 发表于 12-06 09:53 7783次阅读