Redian新闻
>
Shell判断是否包含给定字符串

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

公众号新闻

在 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 0fi

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

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

链接:https://blog.csdn.net/bandaoyu/article/details/115484153

(版权归原作者所有,侵删)


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
OPEC减产导致油价飙升,BP和SHELL抬升富时100Jiangsu City Punishes Property Developers For Selling Cheaply英镑汇率涨破8.80!数百人连滚带爬“追奶酪”!英国扩大海外教师招聘!12个症状诊断是否患长新冠50岁男性,进行性呼吸困难,你的诊断是什么?Chinese Gamers Brace for Adventure as the New Zelda Hits Shelves造成4死2伤的华埠焚毁电单车店死灰再燃大火 初步判断是它惹的祸He Wrote the Book on Rural China. But First, He Wrote a Novel.超越 Bash: 9 个不太知名的 Linux Shell 及其功能 | Linux 中国Java 迎来增强功能字符串模板,代码简化,安全性提升8小时工作应包含2小时“摸鱼”?Cell子刊:“摸鱼”能排出脑内“毒素”,有效提高工作效率BMJ心电病例:心电图的进行性改变,你的诊断是?Bash 基础知识系列 #1:创建并运行你的第一个 Bash Shell 脚本 | Linux 中国乐高集团正式发布两款迪士尼100周年纪念套装:包含13个魔法奇缘树屋和包含72种图案的典藏套装英国春招 | Shell开放金融实习岗位申请渠道LeetCode 力扣官方题解 | 806. 写字符串需要的行数超级漂亮的 Shell这几个周日的雪鞋健行Linux 实现简易的 Shell 命令行解释器40 个简单又有效的 Linux Shell 脚本示例!持续性胸痛患者定位导联游走性ST段抬高,你的诊断是什么?小白教程 / 高清无码/ Xshell 连接 VMware 上的虚拟机40 个简单又有效的 Linux Shell 脚本示例常用的 34 个 Linux Shell 脚本,一定能帮到你!【美食探店】Roswell美国南方菜:The Mill Kitchen and BarShell壳牌春招Last Call!500强外企,WLB,女性友好,6大类职位,往届海归可投!Java 近期新闻:字符串模板、Quarkus、Open Liberty、PrimeFaces、JobRunr、Devnexus教你如何用 10 行 bash shell 脚本监控 Linux?评书网: 一代评书大家风采依然《岳飞传》千古流芳永远精彩, 评书网造谣的可能性有多大?Linux ——超级漂亮的 Shell老北京小曲儿校招 | Shell壳牌春招Last Call!500强外企,WLB,女性友好,6大类职位,往届海归可投!【BusinessBasics】Why CHINA won't OVERTAKE the U.S. as planned邀请函 | 财政部长迈克尔·贝洛蒂(Michael Bellotti Bellotti)的筹款见面会如何入门 Linux Shell 脚本编写 | Linux 中国周末愉快 佩服自己一下
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。