【Linux】文本处理命令grep

grep 是一个在 Unix 和类 Unix 操作系统中广泛使用的命令行工具,用于搜索文本。grep 命令非常强大,因为它可以快速地在大量文本中搜索特定的模式(patterns)。

以下是 grep 的一些主要特性:

  1. 模式匹配grep 允许用户指定一个模式(可以是简单的字符串或复杂的正则表达式),然后在输入的文件中搜索匹配该模式的文本行。

  2. 递归搜索grep 可以递归地在目录结构中搜索文件,查找包含指定模式的文件。

  3. 多种选项grep 提供了多种命令行选项,允许用户控制搜索的行为,比如忽略大小写、只打印匹配行的行号、排除某些文件类型等。

  4. 管道和过滤器grep 可以与其他命令结合使用,通过管道(|)传递数据给 grep 或从 grep 接收数据,使其成为文本处理管道中的重要工具。

  5. 高效grep 是用 C 语言编写的,执行速度非常快,特别适合于处理大型文件。

  6. 跨平台:虽然 grep 最初是为 Unix 系统设计的,但它也被移植到了其他操作系统,包括 Linux、macOS、Windows(通过 Cygwin 或 WSL)等。

  7. 正则表达式支持grep 支持基本的正则表达式(BRE)和扩展的正则表达式(ERE),这使得它在文本搜索时非常灵活。

  8. 文件处理grep 可以读取来自文件的内容,也可以直接从标准输入(stdin)读取数据。

grep 命令的基本语法如下:

grep [options] pattern [file...]

其中 [options] 是可选的命令行参数,pattern 是要搜索的模式,[file...] 是要搜索的文件列表。如果未指定文件,grep 会从标准输入读取数据。

基础练习: grep 命令的练习

1:显示 /var/log/syslog 文件中包含 “error” 字符串的所有行。

命令

grep "error" /var/log/syslog

2:显示 /var/log/syslog 文件中包含 “Error”(不区分大小写)的所有行。

命令

grep -i "Error" /var/log/syslog

3:显示 /var/log/syslog 文件中包含 “warning” 字符串的所有行,以及这些行的行号。

命令

grep -n "warning" /var/log/syslog

4:在 /var/log 目录及其所有子目录中搜索包含 “user” 字符串的文件,并显示这些文件的路径和匹配的行。

命令

grep -r "user" /var/log

5:显示 /var/log/apache2/access.log 文件中包含 IPv4 地址的所有行。

命令

grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/apache2/access.log

6:显示 /var/log/apache2/access.log 文件中不包含 “localhost” 字符串的所有行。

命令

grep -v "localhost" /var/log/apache2/access.log

7:显示 /var/log/user.log 文件中所有匹配 “user[0-9]” 模式的文本,例如 “user1”、“user2” 等。

命令

grep -o "user[0-9]" /var/log/user.log

8:显示 /var/log/cron.log 文件中不包含 “success” 字符串的所有行。

命令

grep -v "success" /var/log/cron.log

9:统计 /var/log/auth.log 文件中包含 “failed” 字符串的行数,并显示这个数字。

命令

grep -c "failed" /var/log/auth.log

10:在 /var/log 目录及其所有子目录中搜索包含 “update” 字符串的文件,但会排除所有 .gz 文件。

命令

grep -r --exclude="*.gz" "update" /var/log

进阶练习:结合 grep 和管道符 | 的练习

1:在 /etc/passwd 文件中查找所有以 “n” 开头的行,并显示这些行的第1个字段。

命令

grep "^n" /etc/passwd | cut -d":" -f1

2:从 /etc/hosts 文件中找出包含 “localhost” 的行,并统计这些行的数量。

命令

grep "localhost" /etc/hosts | wc -l

3:在 /var/log/syslog 文件中搜索包含 “error” 的行,并将这些行的内容复制到名为 “error.log” 的新文件中。

命令

grep "error" /var/log/syslog > error.log

4:在 /etc/services 文件中搜索所有与 “http” 相关的行,然后使用 awk 提取这些行的第2个字段(通常是端口号)。

命令

grep "http" /etc/services | awk '{print $2}'

5:在 /etc/passwd 文件中搜索所有包含数字的行,然后使用 sort 命令对这些行进行排序。

命令

grep "[0-9]" /etc/passwd | sort

6:在 /var/log/syslog 文件中搜索包含 “error” 的行,然后使用 tail 命令显示最后10行包含 “error” 的行。

命令

grep "error" /var/log/syslog | tail -n 10

7:在 /etc/passwd 文件中搜索所有行,然后使用 uniq 命令去除重复行。

命令

grep "" /etc/passwd | sort | uniq

8:在 /var/log/syslog 文件中搜索包含 “error” 的行,然后使用 sed 命令替换 “error” 为 “issue”。

命令

grep "error" /var/log/syslog | sed 's/error/issue/g'

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL系列】深入理解MySQL中的存储、排序字符集

前言 在创建数据库时,我们经常会需要填写数据库的所用字符集、排序规则,字符集和排序规则是两个非常重要的概念,它们决定了数据库如何存储和比较字符串数据。在 MySQL 中,常用的存储字符集有 utf8、utf8mb4,而排序字符…

tcp 超时计时器

在 TCP(传输控制协议)中有以下四种重要的计时器: 重传计时器(Retransmission Timer) 作用:用于处理数据包丢失的情况。当发送方发送一个数据段后,就会启动重传计时器。如果在计时器超时之前没有…

Docker部署ES7.9.3单节点

Elasticsearch(简称ES)是一个分布式、可扩展、实时的搜索与数据分析引擎! Elasticsearch位于Elastic Stack核心,为所有类型的数据提供近乎实时的搜索和分析。无论是结构化或非结构化文本、数字数据还是地理空间数据,El…

ChromeDriver驱动下载地址更新(保持最新最全)

说明: ChromeDriver 是 Selenium WebDriver 用于控制 Chrome 的独立可执行文件。 为了方便下载使用,本文保持ChromeDriver的最新版本更新,并提供115.0.5763.0-133.0.6841.0版本的下载地址: 所有版本和下载地址: &am…

CSS:高级寄巧

精灵图 为什么需要精灵图呢? 一个网页中往往会应用很多小背景图作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送 请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。 因此,为了有…

AutosarMCAL开发——基于EB DsAdc驱动

目录 一、旋转变压器与DsAdc原理1.常见电机角度反馈方式2.可变磁阻旋变工作原理3.使用TC3XX EDSADC进行旋变软解码 二、EB配置1.载波输出2.通道配置3.调制器4.滤波链路5.整流6.积分 三、Mcal接口应用1.AUtosar标准API接口2.应用步骤 四、总结 一、旋转变压器与DsAdc原理 1.常见…

web应用安全和信息泄露预防

文章目录 1:spring actuator导致的信息泄露1.1、Endpoint配置启用检测1.2、信息泄露复现1.3、防御 2:服务端口的合理使用3:弱口令(密码)管理4:服务端攻击4.1、短信业务,文件上传等资源型接口1、…

C语言:链表

链表是一种常见的线性数据结构,其中每个元素(称为节点)包含两部分:数据和指向下一个节点的指针。链表的主要优点是插入和删除操作的时间复杂度较低,但随机访问的效率不如数组。 1. 链表的基本概念 节点(N…

webpack配置

4-3vue-loader测试_哔哩哔哩_bilibili 一.新建文件夹vue_todo,vscode打开 二.ctrl打开终端,输入npm init -y,快速生成一个默认的package.json文件 之后左边出现项目初始化文件package.json 三.接下来需要webpack完成打包,所以安装…

字节跳动辞退103人

大家好,我是程序员面试刷题平台的鸭鸭! 在前阵子实习生破坏大模型训练事件之后,字节又上了一次热搜。 鸭鸭吃完瓜,只能说,社会险恶啊同学们! 5 号,字节跳动内部发布了年内第四份《企业纪律与职…

大型语言模型综述 A Survey of Large Language Models

文章源自 2303.18223 (arxiv.org) 如有侵权,请通知下线 这是一篇关于大语言模型(LLMs)的综述论文,主要介绍了 LLMs 的发展历程、技术架构、训练方法、应用领域以及面临的挑战等方面,具体内容如下: 摘要…

服务器作业4

[rootlocalhost day04]# vim 10.sh [rootlocalhost day04]# cat 10.sh #通过shell脚本分析部署nginx网络服务 #1.接收用户部署的服务名称 read -p "服务名称:(nginx)" server if [ $server ! nginx ];then echo "输入的不是nginx,脚本退出" exit 1…

Linux基础(二十)——程序管理与 SELinux 初探

程序管理与 SELinux 初探 1. 程序和进程2.程序调用流程3. 一个bash中的多任务工作管理4.进程管理4.1 查询进程4.2 进程的执行顺序 5.系统资源的观察6. /proc/* 代表的意义7.SELinux 1. 程序和进程 2.程序调用流程 程序与进程之间的关系: 从上图可以看出&#xff0…

vue3 路由写法及传参方式 !超详细

Vue Router 是 Vue.js 官方的路由管理器。它主要用于单页面应用程序(SPA, Single Page Application)中,帮助解决页面导航、组件复用等问题。 基本的使用 1.router配置文件代码 创建一个ts文件,用来写路由器 // 创建一个路由器,并暴露出去 …

MATLAB绘制正四面体、正六面体

MATLAB绘制正四面体、正六面体 clc;close all;clear all;warning off;% clear all rand(seed, 100); randn(seed, 100); format long g;% 正四面体(Tetrahedron) % 顶点坐标(正四面体的顶点位于一个正方体的对角线上,并经过适当缩…

一文了解 inductive bias(归纳偏好)

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 归纳偏好(Inductive Bias)是机器学习中的一个非常基础但又非常重要的概念。为了更好地理解它,我们先从 “归纳” 和 “偏好” 这两个词开始讲解。 什么是归纳&#x…

leetcode844:比较含退格的字符串

题干 题目分析 两个字符串要进行比较,#代表着回车,也就是删除之前的字符。 若按照遍历的惯例,选择从前到后遍历,但这样没法判断,因为#之前被删除的部分是不需要相同的。 因此考虑到#的含义,我们应该选择从…

【Python爬虫实战】从入门到精通:全面解析IP代理池的原理与实战应用

🌈个人主页:易辰君-CSDN博客 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、IP代理池 (一)基本概念 (二)主要功能 (三…