三剑客之grep

devtools/2024/10/20 20:52:45/

grep初级简单使用:Liunx查找&过滤-CSDN博客

正则表达式-CSDN博客

目录

grep%E5%88%86%E7%B1%BB-toc" style="margin-left:0px;">grep分类

返回值 

使用返回值控制流程

grep%E5%8F%82%E6%95%B0%E7%A4%BA%E4%BE%8B-toc" style="margin-left:0px;">grep参数示例

基本参数

grep%E4%B8%8E%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E6%90%AD%E9%85%8D%E4%BD%BF%E7%94%A8%E4%B8%8E%E7%BB%83%E4%B9%A0%C2%A0-toc" style="margin-left:0px;">grep与正则表达式的搭配使用与示例

看完正则与示例进行无答案式练习


  grep 用于在文件或输入流中查找特定模式或文本。它的名称来源于 "Global Regular Expression Print",可以使用正则表达式来匹配文本。它有许多变体和扩展,支持不同的搜索方法和功能。

grep%E5%88%86%E7%B1%BB">grep分类

grep 的主要版本

  • grep:这是基本的 grep 命令,支持基础的文本搜索和简单的正则表达式。
  • egrep:指 "Extended GREP",支持扩展正则表达式(ERE)。在现代 grep 版本中,egrepgrep -E 的同义词。
  • fgrep:指 "Fixed GREP",用于搜索固定的字符串,而不是正则表达式。在现代 grep 版本中,fgrepgrep -F 的同义词。

egrepfgrep 通常被视为 grep -Egrep -F 的同义词,提供更好的兼容性和功能统一性。

返回值 

grep 命令的返回值是一个非常有用的特性,用于判断搜索操作的结果。根据 grep 的执行情况,返回值可能会有所不同。这些返回值可以在脚本和自动化任务中用于控制流程。

  • 0:表示至少找到了一条匹配的行。 即找到拉,表示正确。
  • 1:表示没有找到匹配的行。就是没找到。
  • 2:表示发生错误,如文件无法读取或参数不正确。即找的地不对

使用返回值控制流程

在 Bash 脚本和命令行中,返回值可以通过 $? 获取

1.基本示例
# 查找文件中是否包含 "pattern"
grep "pattern" filename.txt
# 检查返回值
if [ $? -eq 0 ]; thenecho "Match found"
elseecho "No match found"
fi2.使用 && 和 ||
返回值也可以与逻辑操作符结合,用于更简洁的控制流程。
# 如果找到匹配的行,打印 "Found"
grep "pattern" filename.txt && echo "Found"# 如果没有找到匹配的行,打印 "Not found"
grep "pattern" filename.txt || echo "Not found"3.处理错误
如果 grep 返回值为 2,表示发生了错误,您可以采取相应的措施。
grep "pattern" non_existent_file.txt
if [ $? -eq 2 ]; thenecho "Error occurred"
fi4.结合 set -e
在 Bash 脚本中,set -e 可以用于在命令失败时停止脚本。如果使用 grep 来控制流程,结合 set -e 可以确保脚本在错误时停止。set -e
# 如果没有匹配,脚本将停止
grep "pattern" filename.txt

grep%E5%8F%82%E6%95%B0%E7%A4%BA%E4%BE%8B">grep参数示例

基本参数

(这里记住常用的就行,其它做个了解)

  • -i:忽略大小写。
  • -v:反向匹配,即显示不包含匹配模式的行。
  • -c:返回匹配行的计数。
  • -n:显示匹配行的行号。
  • -l:仅显示包含匹配行的文件名。
  • -o:仅显示匹配的部分,而不是整个行。
  • -r-R:递归搜索,适用于目录。
  • -E:使用扩展正则表达式。
  • -F:使用固定字符串搜索。
  • -s:抑制错误消息。
  • -q:静默退出,不输出任何内容。
  • -x:匹配整个行,而不是部分行。
  • --color:高亮显示匹配的部分。
  • --exclude:排除特定文件或目录。
  • --include:仅搜索特定文件或目录。
  • -B N:显示匹配行前面的 N 行。
  • -A N:显示匹配行后面的 N 行。
  • -C N:显示匹配行前后各 N 行。

基本搜索
# 查找包含 "hello" 的行
grep "hello" file.txt忽略大小写
# 忽略大小写查找 "HELLO"
grep -i "HELLO" file.txt反向匹配
# 查找不包含 "error" 的行
grep -v "error" file.txt查找包含特定文本的文件
# 查找当前目录中包含 "error" 的文件
grep -l "error" *.log显示行号
# 显示匹配行的行号
grep -n "pattern" file.txt返回匹配行的计数
# 返回匹配 "error" 的行数
grep -c "error" file.txt显示匹配部分
# 仅显示匹配的部分
grep -o "pattern" file.txt递归搜索
# 递归搜索目录中的文件
grep -r "pattern" /path/to/directory/使用扩展正则表达式
# 查找包含数字的行
grep -E "[0-9]" file.txt高亮显示匹配
# 高亮显示匹配的部分
grep --color "pattern" file.txt显示前后行
# 显示匹配行及其前后各 2 行
grep -C 2 "pattern" file.txt

grep%E4%B8%8E%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E6%90%AD%E9%85%8D%E4%BD%BF%E7%94%A8%E4%B8%8E%E7%BB%83%E4%B9%A0%C2%A0">grep与正则表达式的搭配使用与示例

匹配行首和行尾
# 匹配以 "hello" 开头的行
grep -E "^hello" filename.txt# 匹配以 "world" 结尾的行
grep -E "world$" filename.txt匹配多种模式
# 匹配 "cat" 或 "dog"
grep -E "cat|dog" filename.txt# 匹配 "error" 或 "warning"
grep -E "error|warning" filename.txt使用字符类
# 匹配包含数字的行
grep -E "[0-9]" filename.txt# 匹配包含字母的行
grep -E "[a-zA-Z]" filename.txt使用量词
# 匹配包含至少一个数字的行
grep -E "[0-9]+" filename.txt# 匹配包含零到两个 "x" 的行
grep -E "x{0,2}" filename.txt复杂的正则表达式
# 匹配包含单词 "hello" 后面跟着一个或多个空格和 "world" 的行
grep -E "hello +world" filename.txt# 匹配包含零或多个字母 "a" 和 "b" 的行
grep -E "(a|b)*" filename.txt递归查找
# 在目录中递归查找包含特定模式的文件
grep -rE "pattern" /path/to/directory/

看完正则与示例进行无答案式练习

egrep 'NW' datafile.txtegrep 'NW' d*.txtegrep '^n' datafile.txtegrep '4$' datafile.txtegrep TBSavage datafile.txtegrep 'TB Savage datafile.txt'egrep '5\..' datafile.txtegrep '\.5' datafile.txtegrep '^[we]' datafile.txtegrep '[^0-9]' datafileegrep  '[A-Z][A-Z] [A-Z]' datafileegrep 'ss*' datafileegrep '[a-z]{9}' datafileegrep '\<north' datafileegrep '\<north\>' datafileegrep '\<[a-r].*n\>' datafileegrep '^n\w*\W' datafileegrep '\bnorth\b' datafileegrep 'NW|EA' datafileegrep '3+' datafileegrep '2\.?[0-9]' datafileegrep '(no)+' datafileegrep 'S(h|u)' datafileegrep 'Sh|u' datafile


http://www.ppmy.cn/devtools/37015.html

相关文章

stm32f103zet6_DAC_2_输出电压

实现效果 DAC输出的电压 同过电压表测量电压 1.DAC配置的步骤 初始化DAC时钟。配置DAC的GPIO端口。设置DAC的工作模式&#xff08;例如&#xff0c;是否使用触发功能&#xff0c;是否启用DAC中断等&#xff09;。启动DAC。 2常用的函数 函数 HAL_DAC_Start() - 开启指定…

Docker容器:Docker-Consul 的容器服务更新与发现

目录 前言 一、什么是服务注册与发现 二、 Docker-Consul 概述 1、Consul 概念 2、Consul 提供的一些关键特性 3、Consul 的优缺点 4、传统模式与自动发现注册模式的区别 4.1 传统模式 4.2 自动发现注册模式 5、Consul 核心组件 5.1 Consul-Template组件 5.2 Consu…

prometheus+grafana的安装与部署及优点

一、Prometheus 的优点 1、非常少的外部依赖&#xff0c;安装使用超简单&#xff1b; 2、已经有非常多的系统集成 例如&#xff1a;docker HAProxy Nginx JMX等等&#xff1b; 3、服务自动化发现&#xff1b; 4、直接集成到代码&#xff1b; 5、设计思想是按照分布式、微服…

特殊类设计

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 不能被拷贝的类 这里我们介绍两种方式&#xff0c;使得一个类不能被拷贝 C98---私有拷贝构造函数 class BanCopy_98 { public:BanCopy_98() default;private:BanCopy_98(const BanCopy_98& copy);int _a; }; 这样&a…

Linux —— 信号(3)

Linux —— 信号&#xff08;3&#xff09; Core dump为什么core默认是被关闭的阻塞信号信号其他相关常见概念信号递达信号未决信号阻塞两者的区别信号的结构 信号集操作函数一个简单使用例子sigpending的使用例子 我们今天接着来了解信号&#xff1a; Core dump 大家不知道有…

Win11安装Docker Desktop运行Oracle 11g 【详细版】

oracle docker版本安装教程 步骤拉取镜像运行镜像进入数据库配置连接数据库&#xff0c;修改密码Navicat连接数据库 步骤 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g运行镜像 docker run -d -p 1521:1521 --name oracle11g registry.cn-ha…

运维实施工程师之Linux服务器全套教程

一、Linux目录结构 1.1 基本介绍 Linux 的文件系统是采用级层式的树状目录结构&#xff0c;在此结构中的最上层是根目录“/”&#xff0c;然后在此目录下再创建其他的目录。 在 Linux 世界里&#xff0c;一切皆文件&#xff08;即使是一个硬件设备&#xff0c;也是使用文本来标…

学习和分析各种数据结构所要掌握的一个重要知识——CPU的缓存利用率(命中率)

什么是CPU缓存利用率&#xff08;命中率&#xff09;&#xff0c;我们首先要把内存搞清楚。 硬盘是什么&#xff0c;内存是什么&#xff0c;高速缓存是什么&#xff0c;寄存器又是什么&#xff1f; 我们要储存数据就要运用到上面的东西。首先里面的硬盘是可以无电存储的&#…