grep命令详解(如何匹配多个字符串)(grep指令)(grep -q)
文章目录
- 20221011 grep如何匹配多个标志?
- 20230412 grep -q(`Use grep -q instead of comparing output with [ -n .. ].`警告)
- 20230421 匹配前后空格`\s`
参考文章:grep命令详解
| grep -c [被搜索文本] # 统计被搜索文本出现的次数
参考文章:Linux中用grep命令来搜索单词及统计匹配的行数
20221011 grep如何匹配多个标志?
参考文章:Linux shell:grep命令查找多个字符串(grep同时匹配多个关键字或任意关键字)
[命令] | grep '[pattern1]\|[pattern2]'
注意\|
跟前后pattern要连着
如,在我们的英伟达盒子上:
root@nx-desktop:/home/ubuntu# ls -l
total 52
drwxr-xr-x 5 ubuntu ubuntu 4096 9月 29 14:59 Desktop
drwxr-xr-x 2 ubuntu ubuntu 4096 12月 24 2020 Documents
drwxr-xr-x 2 ubuntu ubuntu 4096 9月 27 16:19 Downloads
-rw-r--r-- 1 ubuntu ubuntu 8980 12月 24 2020 examples.desktop
drwxr-xr-x 2 ubuntu ubuntu 4096 12月 24 2020 Music
drwxr-xr-x 2 ubuntu ubuntu 4096 12月 24 2020 Pictures
drwxrwxr-x 3 ubuntu ubuntu 4096 10月 10 11:40 projects
drwxr-xr-x 2 ubuntu ubuntu 4096 12月 24 2020 Public
drwxr-xr-x 2 ubuntu ubuntu 4096 12月 24 2020 Templates
drwxr-xr-x 2 ubuntu ubuntu 4096 12月 24 2020 Videos
drwxrwxr-x 8 ubuntu ubuntu 4096 12月 24 2020 VisionWorks-SFM-0.90-Samples
root@nx-desktop:/home/ubuntu#
root@nx-desktop:/home/ubuntu# ls -l | grep 'op\|ic'
drwxr-xr-x 5 ubuntu ubuntu 4096 9月 29 14:59 Desktop
-rw-r--r-- 1 ubuntu ubuntu 8980 12月 24 2020 examples.desktop
drwxr-xr-x 2 ubuntu ubuntu 4096 12月 24 2020 Music
drwxr-xr-x 2 ubuntu ubuntu 4096 12月 24 2020 Pictures
drwxr-xr-x 2 ubuntu ubuntu 4096 12月 24 2020 Public
root@nx-desktop:/home/ubuntu#
root@nx-desktop:/home/ubuntu#
在海康摄像头里:
ls
bin dev heop lib proc sys var
dav etc home linuxrc sbin usr
# # ls -l | grep 'b\|e'
ls -l | grep 'b\|e'
drwxrwxr-x 2 1006 1008 1260 Sep 27 09:58 bin
drwxrwxrwt 15 0 0 5180 Sep 27 09:58 dev
drwxr-xr-x 2 0 0 100 Oct 9 17:30 etc
drwxr-xr-t 3 0 0 60 Oct 9 17:30 heop
drwxr-xr-t 6 0 0 120 Oct 9 17:30 home
drwxr-xr-x 4 0 0 4060 Sep 27 09:58 lib
lrwxrwxrwx 1 0 0 11 Sep 27 09:58 linuxrc -> bin/busybox
drwxrwxr-x 2 1006 1008 180 Sep 27 09:58 sbin
drwxrwxr-x 6 1006 1008 120 Sep 27 09:58 usr
#
20230412 grep -q(Use grep -q instead of comparing output with [ -n .. ].
警告)
示例:
if ! docker images | awk '{print $1":"$2}' | grep -q "^${IMAGE_NAME}:${IMAGE_TAG}$"; then# do something if the image does not exist
else# do something if the image exists
fi
grep -q是grep命令的一个选项,它的作用是在查找匹配项时不输出任何内容,只返回一个退出状态码。如果找到匹配项,则返回0,否则返回1。
在if语句中,我们可以使用grep -q来检查某个条件是否成立,而不必在标准输出中显示任何内容。这样可以提高脚本的效率和可读性。
在我们之前的例子中,grep -q "^${IMAGE_NAME}:${IMAGE_TAG}$"
用于检查docker images的输出是否包含IMAGE_NAME和IMAGE_TAG的组合。如果存在,则if语句返回true,否则返回false。由于我们只关心是否存在匹配项,而不关心具体的匹配内容,因此使用grep -q可以避免不必要的输出和处理。
注意:if ! docker images | awk '{print $1":"$2}' | grep -q "^${IMAGE_NAME}:${IMAGE_TAG}$";
不要改成if ! $(docker images | awk '{print $1":"$2}' | grep -q "^${IMAGE_NAME}:${IMAGE_TAG}$");
因为在if语句中,我们只需要检查命令的退出状态码,而不需要将其输出作为if语句的条件。因此,可以直接使用if ! docker images | awk '{print $1":"$2}' | grep -q "^${IMAGE_NAME}:${IMAGE_TAG}$"
来检查镜像是否不存在。
这个细节来源于一个shellcheck的警告:SC2143 – ShellCheck Use grep -q instead of comparing output with [ -n … ].
20230421 匹配前后空格\s
如下,用grep "\s$NODE_PRJ_NAME\s"
能匹配搜索内容的前后空格
注意:
在正则表达式中,空格可以用空格字符
" "
或者元字符"\s"
来匹配。它们的区别在于:
1、" "
只能匹配空格字符,而"\s"
可以匹配任何空白字符,包括空格、制表符、换行符等。
2、" "
只能匹配一个空格字符,而"\s"
可以匹配一个或多个空白字符。
因此,如果要匹配任何空白字符,应该使用"\s"
;如果只需要匹配空格字符,可以使用" "
。
# 用 pm2 启动 node 项目
echo "Start node prj ..."
# 判断进程是否在运行
# if $PM2 list | grep -q "\s$NODE_PRJ_NAME\s"; then
if pm2 list | grep -q "\s$NODE_PRJ_NAME\s"; thenecho# $PM2 listpm2 listechoecho "进程 $NODE_PRJ_NAME 已经在运行"read -p "是否停止并删除进程?[y/n]" choicecase "$choice" iny | Y)echoecho "停止并删除进程 $NODE_PRJ_NAME ..."echo# $PM2 stop $NODE_PRJ_NAME && $PM2 delete $NODE_PRJ_NAMEpm2 stop $NODE_PRJ_NAME && pm2 delete $NODE_PRJ_NAME;;*)exit 0;;esac
fi
grep命令详解(如何匹配多个字符串)(grep指令)(grep -q)相关推荐
- 正则,grep命令详解
正则表达式和grep.vim.awk.sed等的关系: 正则表达式是一种方法,相当于一种工艺,grep等命令相当于是一个具体的加工机器,机器在加工产品的时候,采用这种方法. 命令是怎么执行的: sel ...
- grep命令详解(常用参数)
grep命令详解: grep版本: # grep -V grep (GNU grep) 2.20 ... grep --help(或者"man grep")查看详细语法及参数 语法 ...
- linux中grep命令返回值,grep命令详解
如果你是一个新手,请从头阅读这篇文章,如果你只是忘记了grep命令的一些常用选项,直接查看文章尾部的总结部分即可. 先说说grep命令能做什么? 我们可以使用grep命令在文本中查找指定的字符串,就像 ...
- linux中grep命令详解及使用示例
文章目录 一.grep命令基本介绍 二.grep命令常见的用法 1. 匹配包含关键词的所有行 2. 匹配不包含关键词的所有行 3. 统计包含关键词的行数 4. 统计包含关键词所有行数,不区分大小写 5 ...
- Linux三剑客之grep命令详解及相关实例
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用 ...
- Linux 文档编辑 : grep 命令详解
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...
- linux grep命令详解
简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...
- Linux下的grep命令详解
grep命令 使用grep命令可以查找文件内符合条件的字符串. 命令语法: grep [选项] [查找模式][文件] 命令中各选项的含义如表所示. 表 ...
- shell中用grep查找并且不输出_shell中grep命令详解
用'grep'搜索文本文件如果您要在几个文本文件中查找一字符串,可以使用'grep'命令.'grep'在文本中搜索指定的字符串.举个例子:假设您正在'/usr/src/linux/Documentat ...
最新文章
- 数据库远程访问数据库服务器网站和端口问题
- 【原创】new和delete
- Python运算符和编码
- 从上海到旧金山,2021 LiveVideoStackCon回归上海
- java中变量的作用域
- Office Word界面和页面字体模糊不清的解决方案
- 5个月内要完成的东西
- 在Win7旗舰版安装并运行LoadRunner11
- 20190901每日一句 那就从现在开始吧,让生命变得更有价值
- 淘宝/天猫/京东/抖音直播年货节抢购秒杀助手更新下载,喵惠抢购助手支持自动免密支付,分享源码共同学习探讨
- 实现wpf的doevents
- mysql的innodb引擎_浅谈MYSQL引擎之INNODB引擎
- 也许你不知道:越自我,越自由!
- 计划的主体部分应有哪些内容_知道智慧树应用写作技能与规范网课答案
- 欢迎进入MyKTV点歌系统展示
- 吊打大厂:内核级安卓系统优化软件 | 雪豹速清app官网下载
- stm32毕业设计 单片机智能扫地机器人
- 移动端GPGPU 架构
- 人在国外能买阿里云服务器吗?
- matlab画包络图