shell 中使用grep 来判断

Linux常用命令——grep命令和通配符以及 grep命令:是一个shell命令,是shell中文本三剑客之一,作用是在文件中提取和匹配符合条件的字符串行。grep命令是一个非常常见的命令,和find命令有很多非常相似的地方,所以在这里先说明。命令格式如下:[root@localhost ~ ] # grep [选项] “搜索内容” 文件名选项:-i:忽略大小写-n:输出行号(显示原始文件中的行号)-v:反向查找--color=auto:搜索出的关键字用颜色显示# 输出行号。... 阅读详情

在shell中,经常会用到grep 检索某个文件,查询是否有字符匹配, 用来判断流程:

如:查询打印出来的log中,是否有想要的字符串:

/usr/app/startup > /usr/config.log
grep "NETMASK" /usr/config.log
if [ $? -ne 0 ]; then
        sleep 70
        echo "sleep 70s"
        /usr/app/startup > /usr/config.log
        insmod /mnt/syslib/modules/fecdev.ko
        /usr/app/slm &
        /usr/app/softupdate slm &
else
        echo "ipconfig succeed"
        insmod /mnt/syslib/modules/fecdev.ko
        /usr/app/slm &
        /usr/app/softupdate slm &
fi

这里用到了grep操作的返回值:

如果有匹配的字符串,返回值是0, 还会打印出匹配字符串的行。

如果没有匹配, 会返回1。

busybox的 grep和 ubuntu PC 的grep 参数还不一样:

这里列了busybox中的grep的使用规则:

grep
1.作用
grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出。grep全称是Global Regular ExpressionPrint,表示全局正则表达式版本,它的使用权限是所有用户。
2.格式
grep [options]
3.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\:忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。
正则表达式是Linux/Unix系统中非常重要的概念。正则表达式(也称为“regex”或“regexp”)是一个可以描述一类字符串的模式(Pattern)。如果一个字符串可以用某个正则表达式来描述,我们就说这个字符和该正则表达式匹配(Match)。这和DOS中用户可以使用通配符
“*”代表任意字符类似。在Linux系统上,正则表达式通常被用来查找文本的模式,以及对文本执行“搜索-替换”操作和其它功能。
4.应用实例
查询DNS服务是日常工作之一,这意味着要维护覆盖不同网络的大量IP地址。有时IP地址会超过2000个。如果要查看nnn.nnn网络地址,但是却忘了第二部分中的其余部分,只知到有两个句点,例如nnn nn..。要抽取其中所有nnn.nnn IP地址,使用[0-9 ]\{3
\}\.[0-0\{3\}\。含义是任意数字出现3次,后跟句点,接着是任意数字出现3次,后跟句点。
$grep ’[0-9]\{3 \}\.[0-0\{3\}\’ipfile
补充说明,grep家族还包括fgrep和egrep。fgrep是fix grep,允许查找字符串而不是一个模式;egrep是扩展grep,支持基本及扩展的正则表达式,但不支持\q模式范围的应用及与之相对应的一些更加规范的模式。

egrep:
为 grep 的扩充版本, 改良了许多传统 grep 不能或不便的操作. 比方说:
- grep 之下不支持 ? 与 + 这两种 modifier, 但 egrep 则可.
- grep 不支持 a|b 或 (abc|xyz) 这类"或一"比对, 但 egrep 则可.
- grep 在处理 {n,m} 时, 需用 \{ 与 \} 处理, 但 egrep 则不需.
诸如此类的... 我个人会建议能用 egrep 就不用 grep 啦... ^_^

egrep:
为 grep 的扩充版本, 改良了许多传统 grep 不能或不便的操作. 比方说:
- grep 之下不支持 ? 与 + 这两种 modifier, 但 egrep 则可.
- grep 不支持 a|b 或 (abc|xyz) 这类"或一"比对, 但 egrep 则可.
- grep 在处理 {n,m} 时, 需用 \{ 与 \} 处理, 但 egrep 则不需.
诸如此类的... 我个人会建议能用 egrep 就不用 grep 啦... ^_^



查看电脑mac地址+主机名+用户名并导出 张三:李四,应公司要求,今天下班前必须将这张表格里面用户电脑的mac地址统计出来!李四:我该怎么办呢?一个一个查看,太没有效率了吧!对了,我可以做一个bat脚本啊! 阅读详情

相关推荐

纯相位全息图优化算法综述

除此之外,还有许多用于减少斑点噪声的非迭代方法,例如:采用下采样掩膜的采样纯相位全息图(Sampled-Phase-only Hologram)方法、模式化相位掩膜(Patterned Phase-Only Hologram)方法、双相位方法(Double-Phase Method),以及使用非随机相位掩膜的方法(Random Phase-Free Method)等。迭代算法通常由一个对目标全息图的近似出发,经过一系列的重复操作不断优化这个近似全息图,直到该近似所得到的重建图像满足一定的误差要求;

ZhongKeWeiXing的博客 1427

Shell语句 for、while、case、if、输出重定向、grep查询用法

shell脚本 Shell就是一个命令行解释器,它的作用是解释执行用户的命令, 用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive)。 Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一 个Shell脚本(Script),其中有很多条命令, 让Shell一次把这些命令执行完,而不必一条一条地敲 命令。 Shell脚本和编程语言很相似

看风景的博客 1759

Ubuntu docker镜像中下载安装 DPABI(DPARSF)

在Ubuntu服务器的docker镜像中用MATLAB运行DPABI(以及使用DPARSF的功能)。

Pandako's Blog 1722

shell脚本grep -q用于if条件判断

grep -q用于if逻辑判断 -q 参数,本意是 Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. 中文意思为,安静模式,不打印任何标准输出。如果有匹配的内容则立即返回状态值0。 例如: if grep -q “username” home.txt then 对usernam

rita0417的博客 7248

POI 写word,添加标题,表格,图片,自动生成目录,合并单元格

工程地址:https://github.com/zheng-chang-wei/word package com.example.demo1.poi; import org.apache.poi.xwpf.usermodel.XWPFDocument; import java.io.File; import java.io.FileOutputStream; public class ...

zheng_chang_wei的博客 6155

基于vue2的echarts3D地球

采用vue2+js实现了echarts3D地球的放大、缩小和旋转

qq_44699269的博客 1132

shell-知识07 if 的【 -z 】【 -n 】用法;grep -w 精确匹配范围;grep -q 屏蔽输出

【 -z 内容】 判断空 则是真 ( 注意【 后要有空格 ) 【 -n 内容 】 判断非空 则是真 判断内容是“变量“时候要加引号,判断内容是文件时候不用 比较数值时候,有时候返回的数值可能为空,这时候就要先期去判断这数值不会为空 【 -n 】 除了判断一个变量是否为空,还可以直接判断一个文件内是否为空 判断一个用户是否存在, grep -w 看看文件中是否有这个用户名 (为啥要加 -w ? 出于匹配精确度的需要 因为要找的用户...

桑 4219

大学物理第二章 质点动力学详解

大学物理第二章 质点动力学概念详解

weixin_63026364的博客 1万+

shell中使用grep来判断

                                 &...

qq_45595830的博客 1061

1. 基于STM32的1.28寸圆形IPS屏(GC9A01)驱动移植实战:软件SPI与硬件SPI双方案详解

本文详细介绍了如何在STM32平台上为1.28寸圆形IPS屏(GC9A01驱动芯片)移植驱动程序,涵盖软件SPI与硬件SPI两种实现方案。内容从引脚定义、工程搭建、GPIO配置到SPI外设初始化逐步详解,并提供了完整的测试代码,帮助开发者根据项目需求(灵活性或性能)选择合适的通信方式,快速点亮屏幕并集成到智能手表等嵌入式项目中。

weixin_42300144的博客 203

基于文件通信的QMT量化交易信号桥接方案设计与实现

在量化交易系统开发中,进程间通信(IPC)是连接不同计算模块、实现策略逻辑与交易执行解耦的关键技术。其核心原理在于允许运行于独立环境或进程的程序安全、可靠地交换数据。文件系统通信作为一种经典的IPC方法,因其实现简单、跨平台兼容性好且数据可持久化,在非高频场景下具有重要技术价值。它尤其适用于需要将外部复杂计算环境(如配备丰富数据科学库的Python环境)与专用交易终端(如迅投QMT)集成的应用场景。通过约定文件路径与数据格式,外部程序可将包含交易指令的JSON信号文件写入特定目录,而交易终端通过轮询或监听机

weixin_28678151的博客 417

shell 判断grep返回值_年薪百万之路--第七十八天 Linux基础 shell

一. 基础知识部分:· 变量知识概念 1)常规变量:临时定义方式: 在脚本中或命令行中设置 oldboy=123 永久定义方式: 在特殊系统变量文件中设置 /etc/profile /etc/bashrc ~/.bashrc ~/.bash_profile设置变量: ① 进行字符串设置 name="oldboy" name=”123456" name="oldboy ed...

weixin_39844284的博客 3108

基于YOLOv8深度学习架构的智能农业巡检小车系统—面向农作物与杂草实时精准识别的创新实践

本研究设计并实现了一套基于YOLOv8的智能农业巡检小车系统,解决农田中农作物与杂草的精准识别与追踪问题。系统采用改进YOLOv8-RGCSPELAN-ECA-AFPN模型,融合ECA注意力机制与AFPN多尺度特征融合结构,提升复杂环境下的检测精度。硬件以树莓派4B为核心,集成摄像头、传感器与电机模块,具备避障、循迹与自主导航功能。移动端基于Android部署NCNN推理引擎,实现模型高效移植与实时检测。

Stara-AI的博客 1424

bash grep 判断_用Shell判断字符串包含关系的方法小结

前言现在每次分析网站日志的时候都需要判断百度蜘蛛是不是真实的蜘蛛,nslookup之后需要判断结果中是否包含“baidu”字符串以下给出一些shell中判断字符串包含的方法,来源程序员问答网站 stackoverflow 以及segmentfault。方法一:利用grep查找strA="long string"strB="string"result=$(echo $strA | grep "${s...

weixin_33602725的博客 774

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

shell中用grep判断

                                 &...

qq_45595830的博客 1012

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

grep 判断不是正则的_shell判断grep结果

常用文本过滤命令笔记(find grep wc awk sed sort uniq split)_IT/计算机_专业资料。常用文本过滤命令笔记(find grep wc awk sed sort uniq split) 都支持 ......六、重定向 重定向标准输入: sort < a.txt 重定向标准输出: ls > a.txt 重定向标准错误: grep “dkeikdk” a....

weixin_39926613的博客 297

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

shell 判断grep的结果是否含有特定字符串方法

利用grep执行的命令结束代码$?的值来判断是否已经grep到特定的值。 当$?等于0时,表示已经找到。 当$?不等于1时,表示没有找到。 当$?大于1时,表示命令执行错误,可能是参数错误什么的导致命令没有成功执行。 示例代码: echo who am i | grep -q "^Kenny$" if [ $? -ne 0 ] ;then     echo "grep retur

zhuguiqin1的专栏 3万+

grep在shell脚本中使用,判断进程是否存在

在shell中,判断一个进程是否存在,是判断进程数量 1:进程判断 没有运行进程时,如下显示,只有一条,这条就是这条命令的进程。 ubuntu@k8s-node1:~$ ps -ef|grep nginx ubuntu 7922 4021 3 09:05 pts/0 00:00:00 grep --color=auto nginx 如果进程存在就会显示多条进程信息,其中一条包括命令这条。 ubuntu@k8s-node1:~$ ps -ef|grep nginx 1997

6170

linux shell grep 判断,Linux | grep用于if逻辑判断

突然发现grep -q 用于if 逻辑判断很好用。-q参数:本意是 Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. 中文意思为,安静模式,不打印任何标准输出。如果有匹配...

weixin_36210904的博客 4359

shell脚本中 用grep判断某程序是否启动

#!/bin/bash program=`ps aux | grep dir | grep xyz` if ["$program" = ""] then ... else ... fi 其中,要判断xyz程序是否已启动。 注意,要做两个判断,dir的grep判断,xyz的grep判断,并且dir和xyz的名称不能互相包含。 因为grep执行时

大漠孤舟 6396

判断正则 shell_shell三剑客之grep!

背景对于很多的测试人员来说,grep命令都很熟悉,用的最多的比如去查找指定的进程:ps -ef | grep ***其中***为进程名或进程号,这里我们只用到的grep的最基础功能-从标准输出中过滤指定的字符串,实际上grep的功能远不止如此。这篇文章给大家来介绍下grep的进阶及高阶用法,来帮助我们在测试工作中提升效率。grep的全称:Global search Regular Ex...

weixin_33556941的博客 336

shell--1--shell入门 shell中添加信息 类型的判断 清空日志 grep

什么是shell Shell是操作器系统中的一个软件包,包含在linux内核的外面,为用户和内核之间的交互提供了一个接口,系统中的命令用shell去解释shell接收系统回应的输出并显示到屏幕中。Bash=Gnu Bourne-Again Shell 什么是shell脚本 脚本是一种解释型语言,用shell脚本保存执行的动作,用shell脚本判定命令的执行条件,用脚本来实现动作的批量执...

weixin_40460156的博客 304

bash grep 判断_Shell(Bash)中如何判断是否存在某个命令

最好避免使用 which,做为一个外部的工具,并不一定存在,在发行版之间也会有区别,有的系统的 which 命令不会设置有效的 exit status,存在一定的不确定性。Bash 有提供一些内建命令如 hash、type、command 也能达到要求。$ command -v foo >/dev/null 2>&1 || { echo >&2 "I requir...

weixin_42405705的博客 810

grep 判断不是正则的_Shell—正则表达式(grep命令、sed工具)

前言正则表达式对于系统管理员来说是非常重要的,熟练运用正则表达式可使工作变得更加简单、方便。一、正则表达式概述正则表达式定义正则表达式,又称正规表达式、常规表达式使用字符串来描述、匹配一系列符合某个规则的字符串简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定字符串。正则表达式组成普通字符:大小写字母、数字、标点符号及一些其他符号元字符:在正则表达式中具有特殊意义...

weixin_39625258的博客 111

bash grep 判断_Shell中判断字符串是否为数字的6种方法分享

#!/bin/bash## 方法1a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] && echo string a is numbers第一个-n是shell的测试标志,对后面的串"`sed -n '/^[0-9][0-9]*$/p'`" 进行测试,如果非空,则结果为真。sed默认会显示所有输入行信息的,sed 的“-n”...

weixin_33308507的博客 1235
上一篇: mount -o loop 内核文件系统
下一篇: 结构体中字符数组的赋值
lamdoc
博客等级 码龄18年 155粉丝 655原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值