文章目录

  • 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)相关推荐

  1. 正则,grep命令详解

    正则表达式和grep.vim.awk.sed等的关系: 正则表达式是一种方法,相当于一种工艺,grep等命令相当于是一个具体的加工机器,机器在加工产品的时候,采用这种方法. 命令是怎么执行的: sel ...

  2. grep命令详解(常用参数)

    grep命令详解: grep版本: # grep -V grep (GNU grep) 2.20 ... grep --help(或者"man grep")查看详细语法及参数 语法 ...

  3. linux中grep命令返回值,grep命令详解

    如果你是一个新手,请从头阅读这篇文章,如果你只是忘记了grep命令的一些常用选项,直接查看文章尾部的总结部分即可. 先说说grep命令能做什么? 我们可以使用grep命令在文本中查找指定的字符串,就像 ...

  4. linux中grep命令详解及使用示例

    文章目录 一.grep命令基本介绍 二.grep命令常见的用法 1. 匹配包含关键词的所有行 2. 匹配不包含关键词的所有行 3. 统计包含关键词的行数 4. 统计包含关键词所有行数,不区分大小写 5 ...

  5. Linux三剑客之grep命令详解及相关实例

    grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用 ...

  6. Linux 文档编辑 : grep 命令详解

    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...

  7. linux grep命令详解

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  8. Linux下的grep命令详解

    grep命令 使用grep命令可以查找文件内符合条件的字符串. 命令语法: grep [选项] [查找模式][文件] 命令中各选项的含义如表所示. 表                          ...

  9. shell中用grep查找并且不输出_shell中grep命令详解

    用'grep'搜索文本文件如果您要在几个文本文件中查找一字符串,可以使用'grep'命令.'grep'在文本中搜索指定的字符串.举个例子:假设您正在'/usr/src/linux/Documentat ...

最新文章

  1. 数据库远程访问数据库服务器网站和端口问题
  2. 【原创】new和delete
  3. Python运算符和编码
  4. 从上海到旧金山,2021 LiveVideoStackCon回归上海
  5. java中变量的作用域
  6. Office Word界面和页面字体模糊不清的解决方案
  7. 5个月内要完成的东西
  8. 在Win7旗舰版安装并运行LoadRunner11
  9. 20190901每日一句 那就从现在开始吧,让生命变得更有价值
  10. 淘宝/天猫/京东/抖音直播年货节抢购秒杀助手更新下载,喵惠抢购助手支持自动免密支付,分享源码共同学习探讨
  11. 实现wpf的doevents
  12. mysql的innodb引擎_浅谈MYSQL引擎之INNODB引擎
  13. 也许你不知道:越自我,越自由!
  14. 计划的主体部分应有哪些内容_知道智慧树应用写作技能与规范网课答案
  15. 欢迎进入MyKTV点歌系统展示
  16. 吊打大厂:内核级安卓系统优化软件 | 雪豹速清app官网下载
  17. stm32毕业设计 单片机智能扫地机器人
  18. 移动端GPGPU 架构
  19. 人在国外能买阿里云服务器吗?
  20. matlab画包络图

热门文章

  1. 行式数据库 VS 列式数据库
  2. 深度学习远程服务器配置
  3. Python实现list列表的有序子集查找
  4. 辗转相除法详解(C语言实现)
  5. Java重写的7个规则
  6. spring配置bean
  7. 【调剂】北京外国语大学人工智能与人类语言重点实验室2022年全国研招统考拟接收调剂公告...
  8. 一键复制 html,最简单js代码实现一键复制文字
  9. JVM设置对象直接进入年老代
  10. 不跟风,容器技术的真实优、缺点