Linux grep命令详细教程

简介

Linux grep命令是一种非常常用的文本搜索工具,它可以在给定的文件中搜索匹配的字符串,并输出匹配的行。grep是全称“global search regular expression print”,可以识别正则表达式,并使用正则表达式进行搜索。

选项

以下是 grep 的所有选项:

grep [options] [pattern] [files]
  • -a, --text: 将二进制文件作为文本文件处理。
  • -c, --count: 显示匹配行数,而不是行本身。
  • -e pattern, --regexp=pattern: 查找指定的模式,支持多个模式。
  • -f file, --file=file: 从文件中读取模式,每个模式占一行。
  • -i, --ignore-case: 忽略大小写。
  • -l, --files-with-matches: 只打印文件名,而不是行本身。
  • -n, --line-number: 在每行的前面打印行号。
  • -r, --recursive: 遍历子目录中的文件。
  • -v, --invert-match: 输出不匹配的行。
  • -x, --line-regexp: 仅匹配整行。
  • -w, --word-regexp: 仅匹配整个单词。

pattern 通常是一个正则表达式,用于匹配指定的文本模式。

files 可以是若干个文件,也可以是目录。

以上是 grep 命令的所有选项,更多信息可以使用 man grep 在终端中查看。

常用grep选项举例

下面是常用的grep选项及其举例:

  1. 搜索指定字符串

可以使用grep搜索包含指定字符串的文件或文件夹,例如:

grep "hello" file.txt
grep "hello" folder/file.txt
  1. 搜索多个字符串

使用-E选项可以在同一行中搜索多个字符串。

grep -E "hello|world" file.txt
  1. 忽略大小写

使用-i选项可以忽略大小写的差异。

grep -i "hello" file.txt
  1. 输出行号

使用-n选项可以输出匹配字符串所在行的行号。

grep -n "hello" file.txt
  1. 反向搜索

使用-v选项可以输出不包含指定字符串的行。

grep -v "hello" file.txt
  1. 搜索某个范围内的行

使用 -A, -B, 或-C选项搜索特定范围内的行。

grep -A 2 "hello" file.txt  #输出包含“hello”的行以及后两行。
grep -B 2 "hello" file.txt  #输出包含“hello”的行以及前两行。
grep -C 2 "hello" file.txt  #输出包含“hello”的行以及前后两行。
  1. 搜索整个单词

使用-w选项可以搜索指定单词作为整个单词匹配。

grep -w "hello" file.txt
  1. 统计匹配次数

使用-c选项可以统计匹配字符串的个数。

grep -c "hello" file.txt
  1. 搜索指定文件类型

使用通配符可以搜索特定类型的文件或使用 --include选项来仅搜索指定文件类型。

grep "hello" *.txt
grep "hello" --include "*.txt" folder/
  1. 搜索子目录

使用-r或-R选项可以搜索子目录的文件。

grep -r "hello" folder/
grep -R "hello" folder/
  1. 不忽略二进制文件

使用-a选项可以强制grep搜索二进制文件。

grep -a "hello" binary_file.bin
  1. 搜索时忽略特定目录

使用 --exclude-dir选项来忽略特定目录的搜索。

grep -r "hello" folder/ --exclude-dir=log/
  1. 搜索特定行数

使用 -m 选项指定只搜索文件中的前几行。

grep -m 10 'hello' file.txt # 只搜索文件中的前10行
  1. 输出匹配字符串前后的内容

使用 -o 选项仅输出匹配字符串,而 -A 和 -B 选项可以输出字符串前后的内容。

grep -o 'hello' file.txt # 只输出匹配到的 'hello' 字符串,而不包含它前后的内容
grep -A 3 'hello' file.txt # 输出包含 'hello' 字符串的行以及后三行
grep -B 2 'hello' file.txt # 输出包含 'hello' 字符串的行以及前两行
  1. 显示不匹配行

使用 -L 选项输出不匹配指定字符串的行。

grep -L 'hello' file.txt # 输出不匹配 'hello' 字符串的行
  1. 显示匹配行前几行和后几行的内容

使用 -C 选项,可以同时输出匹配字符串前后几行的内容。

grep -C 2 'hello' file.txt # 输出包含 'hello' 字符串的行以及前后两行内容
  1. 搜索多个文件

可以一次性搜索多个文件。

grep 'hello' file1.txt file2.txt file3.txt # 搜索 file1.txt, file2.txt, file3.txt 文件中的 'hello' 字符串
  1. 搜索时忽略空白字符

使用 -w 选项,可以忽略匹配字符串前后的空格、制表符等空白字符。

grep -w 'hello' file.txt # 忽略匹配字符串前后的空格、制表符等空白字符
  1. 搜索时查看匹配字符串的上文或下文

使用 -B 和 -A 选项,可查看匹配字符串上下文的内容。

grep -B 2 'hello' file.txt # 输出包含 ‘hello’ 字符串的行以及匹配字符串前2行
grep -A 3 'hello' file.txt # 输出包含 ‘hello’ 字符串的行以及匹配字符串后3行

以上就是grep的所有功能举例。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/46470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】

windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…

【旅游度假】Axure酒店在线预订APP原型图 旅游度假子模块原型模板

作品概况 页面数量:共 10 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:旅游度假,生活服务 作品申明:页面内容仅用于功能演示,无实际功能 作品特色 本作品为「酒店在线预订」的移动端…

RS232、RS422、RS485硬件及RS指令、RS2指令应用知识学习

RS232、RS422、RS485硬件及RS指令、RS2指令应用知识学习 一、串行(异步/同步)通讯、并行通讯、以太网通讯 二、单工通讯/半双工通讯/双工通讯 三、常用硬件接口(工业上基本是RS485两线制的接线) 常用硬件接口RS232/RS422/RS485,…

BC96 有序序列判断

描述 输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。 数据范围:3≤n≤50 序列中的值都满足1≤val≤100。 输入描述 第一行输入一个整数N(3≤N≤50)。 第二行…

《知识图谱与大模型融合实践研究报告》发布,创邻科技参编

近期,第三届知识图谱产业发展论坛暨知识图谱与大模型融合研讨会在北京召开。会上,《知识图谱与大模型融合实践研究报告》正式发布! 该白皮书是由中国电子技术标准化研究院依托知识图谱产业推进方阵、全国信标委人工智能分委会知识图谱工作组…

⛳ TCP 协议面试题

目录 ⛳ TCP 协议面试题🐾 一、为什么关闭连接的需要四次挥⼿,⽽建⽴连接却只要三次握⼿呢?🏭 二、为什么连接建⽴的时候是三次握⼿,可以改成两次握⼿吗?👣 三、为什么主动断开⽅在TIME-WAIT状态…

spring boot 3使用 elasticsearch 提供搜索建议

业务场景 用户输入内容&#xff0c;快速返回建议&#xff0c;示例效果如下 技术选型 spring boot 3elasticsearch server 7.17.4spring data elasticsearch 5.0.1elasticsearch-java-api 8.5.3 pom.xml <dependency><groupId>org.springframework.boot</gr…

iotdb查询结果集转换为java对象

iotdb查询结果集转换为java对象 百度文心 未使用插件 要将IoTDB查询结果集转换为Java对象&#xff0c;您需要编写Java代码以解析查询结果并将其转换为相应的Java对象。 以下是一个示例代码&#xff0c;可以将IoTDB查询结果集转换为Java对象&#xff1a; import java.io.IOEx…

节点不连续伽辽金方法在求解线性和非线性平流方程中的一维实现(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

可视化绘图技巧100篇进阶篇(九)-三维百分比堆积条形图(3D Stacked Percentage Bar Chart)

目录 前言 适用场景 绘图工具及代码实现 帆软 实现思路 方案一:使用计算指标 上传数据

Hyperledger Fabric的使用及开发

Hyperledger Fabric是Linux基金会发起的一种跨行业的区块链技术&#xff0c;目前在多家大型公司有着应用&#xff0c;这里就不多做HF本身的介绍了&#xff0c;有兴趣可关注其官网。 1. 准备工作&#xff1a; 开始前需要一定的准备工作&#xff0c;安装各类中间件&#xff1a;…

微服务中间件--Nacos

Nacos 1. Nacos入门a.服务注册到Nacosb.Nacos服务分级存储模型c.NacosRule负载均衡d.服务实例的权重设置e.环境隔离 - namespacef.Nacos和Eureka的对比 2. Nacos配置管理a.统一配置管理b.配置热更新c.多环境配置共享 1. Nacos入门 Nacos是阿里巴巴的产品&#xff0c;现在是Spr…

基于MongoDB的空间数据存储与查询

一、概念说明 1.1 空间地理数据 MongoDB 中使用 GeoJSON对象 或 坐标对 描述空间地理数据。MongoDB使用 WGS84 参考系进行地理空间数据查询。 1、MongoDB支持空间数据的存储&#xff0c;数据类型需要限制为GeoJSON; 2、MongoDB可以为GeoJSON类型数据建立索引&#xff0c;提升空…

在jupyter notebook中使用海龟绘图

首先&#xff0c;安装ipyturtle3 ref:ipyturtle3 PyPI pip install ipyturtle3然后&#xff0c;安装ipycanvas ipycanvas是一个需要安装在与JupyterLab实例相同环境的包。此外&#xff0c;您需要安装nodejs&#xff0c;并启用JupyterLab ipycanvas小部件。 所有这些都在ipy…

ARM--day7(cortex_M4核LED实验流程、异常源、异常处理模式、异常向量表、异常处理流程、软中断编程、cortex_A7核中断实验)

软中断代码&#xff1a;&#xff08;keil软件&#xff09; .text .global _start _start:1.构建异常向量表b resetb undef_interruptb software_interruptb prefetch_dataabortb data_abortb .b irqb fiq reset:2.系统一上电&#xff0c;程序运行在SVC模式1>>初始化SVC模…

Oracle 中 ROWNUM 使用问题记录

ROWNUM 使用问题记录(2023-08-17) Oracle 版本&#xff1a; 19.0.0.0.0 Enterprise现象&#xff1a;今天在项目遇到一个问题&#xff0c;测试人员反馈前一天能看到的数据今天看不到了 用表格举例&#xff0c;这是前一天看到的数据&#xff0c;有9、7、1 这几个数量信息 日期…

postgresql 的递归查询

postgresql 的递归查询功能很强大&#xff0c;可以实现传统 sql 无法实现的事情。那递归查询的执行逻辑是什么呢&#xff1f;在递归查询中&#xff0c;我们一般会用到 union 或者 union all&#xff0c;他们两者之间的区别是什么呢&#xff1f; 递归查询的执行逻辑 递归查询的…

NFTScan NFT API 在 DID Protocol 开发中的应用

自互联网发展以来&#xff0c;Web2.0 时代产生了网络社会&#xff0c;社会已经不再局限于地理边界&#xff0c;而 Web 3.0 引入了去中心化的理念&#xff0c;强调个体数据隐私和可信互操作性。在这个新的时代中&#xff0c;去中心化身份&#xff08;Decentralized Identifier 即…

linux中shell脚本——shell数组、正则表达式及文件三剑客之AWK

目录 一.shell数组 1.1.数组分类 1.2.定义数组方法 二.正则表达式 2.1.元字符 2.2.表示次数 2.3.位置锚定 2.4.分组 2.5.扩展正则表达式 三.文本三剑客之AWK 3.1.awk介绍及使用格式 3.2.处理动作 3.3.awk选项 3.4.awk处理模式 2.5.awk常见的内置变量 2.6.if条…

pytorch内存泄漏

问题描述&#xff1a; 内存泄漏积累过多最终会导致内存溢出&#xff0c;当内存占用过大&#xff0c;进程会被killed掉。 解决过程&#xff1a; 在代码的运行阶段输出内存占用量&#xff0c;观察在哪一块存在内存剧烈增加或者显存异常变化的情况。但是在这个过程中要分级确认…