linux 三剑客命令学习

news2025/5/12 15:34:24

grep

Grep 是一个命令行工具,用于在文本文件中搜索打印匹配指定模式的行。它的名称来自于 “Global Regular Expression Print”(全局正则表达式打印),它最初是由 Unix 系统上的一种工具实现的。Grep 工具在 Linux 和其他类 Unix 系统中广泛使用,它提供了强大的文本搜索功能。

基本格式

grep [option] pattern [file…]
grep命令的匹配模式pattern带"“、不带”"和’'的区别如下

  1. 不带引号(直接写模式)
    Shell 会对模式中的特殊字符(如 *、?、$、空格等)进行解释(比如展开通配符或变量)。
    如果模式中包含空格或特殊字符,可能会导致 grep 接收错误的参数。
    示例:
grep hello world file  # 错误!Shell 会认为 `hello` 和 `world` 是两个参数。
grep hello*world file # 如果当前目录有匹配 `hello*world` 的文件,Shell 会先进行文件名扩展。
  1. 双引号 “”
    bash
    grep “pattern” file
    Shell 会解释双引号内的变量($VAR)和命令替换(command 或 $(command)),但其他字符(如 *、?)会被保留。
    适合模式中包含空格或需要保留部分特殊字符(如 $ 用于正则表达式)时使用。
    示例:
grep "hello world" file   # 正确匹配包含 "hello world" 的行。
grep "$USER" file         # Shell 会替换 `$USER` 为当前用户名,然后传递给 grep。
grep "*.txt" file         # `*` 不会被 Shell 扩展,而是作为正则表达式传递给 grep。
  1. 单引号 ‘’
    Shell 不会对单引号内的任何字符(包括变量和通配符)进行解释,所有内容会原样传递给 grep。适合模式中包含需要保留的 $、* 等正则表达式元字符时使用。
    示例:
grep 'pattern' file
grep '$USER' file         # 直接匹配字符串 `$USER`(而非变量值)。
grep 'hello*world' file   # `*` 作为正则表达式的量词(匹配 0 或多个 `o`)。
grep 'a b' file           # 匹配包含 "a b" 的行。

正则表达式

在 Linux 中,正则表达式(Regular Expressions, regex)用于文本匹配和处理,常见的工具如 grep、sed、awk 等都支持正则表达式。正则表达式由 元字符(metacharacters) 和 普通文字(literal characters) 组成:

  1. 普通文字(Literal Characters)
    普通文字就是字面意义上的字符,例如 a、1、- 等,它们匹配自身:
grep "hello" file.txt  # 匹配包含 "hello" 的行

h、e、l、l、o 都是普通文字,直接匹配。

  1. 元字符(Metacharacters)
    元字符在正则表达式中有特殊含义,用于匹配模式。常见的元字符包括:
元字符描述示例
.匹配 任意单个字符(除换行符 \n)a.c 匹配 abc、a1c、a-c
^匹配 行首^hello 匹配以 hello 开头的行
$匹配 行尾world$ 匹配以 world 结尾的行
*匹配前一个字符 0 次或多次go*d 匹配 gd、god、good
+匹配前一个字符 1 次或多次(grep -E 或 egrep 支持) go+d 匹配 god、good,但不匹配 gd
?匹配前一个字符 0 次或 1 次(grep -E 或 egrep 支持) colou?r 匹配 color 和 colour
[…]匹配 括号内的任意一个字符[aeiou] 匹配任意一个元音字母
[^…]匹配 不在括号内的任意一个字符[^0-9] 匹配非数字字符
\转义字符,使元字符变为普通字符\.匹配 . 而不是任意字符
{n}匹配前一个字符 恰好 n 次(grep -E 或 egrep 支持)a{3} 匹配 aaa
{n,}匹配前一个字符 至少 n 次(grep -E 或 egrep 支持)a{2,} 匹配 aa、aaa、aaaa…
{n,m}匹配前一个字符 n 到 m 次(grep -E 或 egrep 支持)a{2,4} 匹配 aa、aaa、aaaa
  1. 正则表达式模式示例
    (1) 基本匹配
grep "hello" file.txt      # 匹配包含 "hello" 的行
grep "^hello" file.txt    # 匹配以 "hello" 开头的行
grep "world$" file.txt    # 匹配以 "world" 结尾的行
grep "h.llo" file.txt     # 匹配 "hallo"、"hello"、"hxllo" 等

(2) 字符类 […]

grep "[aeiou]" file.txt   # 匹配包含任意元音字母的行
grep "[0-9]" file.txt     # 匹配包含数字的行
grep "[^0-9]" file.txt    # 匹配包含非数字的行

(3) 量词 *, +, ?, {n,m}

grep "go*d" file.txt      # 匹配 "gd", "god", "good", "gooood" 等
grep -E "go+d" file.txt   # 匹配 "god", "good", 但不匹配 "gd"
grep -E "colou?r" file.txt # 匹配 "color" 或 "colour"
grep -E "a{3}" file.txt   # 匹配 "aaa"
grep -E "a{2,4}" file.txt # 匹配 "aa", "aaa", "aaaa"

(4) 转义字符 \

grep "\.txt" file.txt    # 匹配 ".txt"(而不是 "atxt"、"btxt" 等)
grep "\\" file.txt       # 匹配反斜杠 `\`(需要双重转义)

(5) 或操作 |

grep -E "cat|dog" file.txt  # 匹配 "cat" 或 "dog"
  1. grep 不同模式的区别
模式命令说明
基本正则表达式(BRE)grep “pattern”默认模式,*、^、$ 等元字符可用,但 +、?、 需要转义
扩展正则表达式(ERE)grep -E 或 egrep支持 +、?、{n,m} 等,无需转义
固定字符串模式grep -F 或 fgrep禁用正则表达式,直接匹配文字

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

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

相关文章

【MySQL】第二弹——MySQL表的增删改查(CRUD)

文章目录 🎓一. CRUD🎓二. 新增(Create)🎓三. 查询(Rertieve)📖1. 全列查询📖2. 指定列查询📖3. 查询带有表达式📖4. 起别名查询(as )📖 5. 去重查询(distinct)📖6. 排序…

基于zernike 拟合生成包裹训练数据-可自定义拟合的项数

可以看到拟合误差其实还是有很多的,但是这个主要是包裹噪声产生的,用到了github 上的zernike 库,直接pip install 一下安装就可以了 import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D import matpl…

大模型赋能:2D 写实数字人开启实时交互新时代

在数字化浪潮席卷全球的当下,人工智能技术不断突破创新,其中大模型驱动的 2D 写实数字人正成为实时交互领域的一颗新星,引领着行业变革,为人们带来前所未有的交互体验。 一、2D 写实数字人概述 2D 写实数字人是通过计算机图形学…

5G-A来了!5G信号多个A带来哪些改变?

5G-A来了!5G信号多个A带来哪些改变? 随着科技不断进步,通信网络的迭代升级也在加速。自4G、5G的推出以来,我们见证了通信技术的飞跃式发展。最近,越来越多的用户发现自己手机屏幕右上角的5G标识已经变成了“5G-A”。那…

Chroma:一个开源的8.9B文生图模型

Chroma 模型讲解 一、模型概述 Chroma 是一个基于 FLUX.1-schnell 的 8.9B 参数模型。它采用了 Apache 2.0 许可证,完全开源,允许任何人使用、修改和在其基础上进行开发,不存在企业限制。该模型目前正在训练中,训练数据集从 20M…

[强化学习的数学原理—赵世钰老师]学习笔记01-基本概念

[强化学习的数学原理—赵世钰老师]学习笔记01-基本概念 1.1 网格世界的例子1.2 状态和动作1.3 状态转移1.4 策略1.5 奖励1.6 轨迹、回报、回合1.6.1 轨迹和回报1.6.2 回合 1.7 马尔可夫决策过程 本人为强化学习小白,为了在后续科研的过程中能够较好的结合强化学习来…

1、Kafka与消息队列核心原理详解

消息队列(Message Queue, MQ)作为现代分布式系统的基础组件,极大提升了系统的解耦、异步处理和削峰能力。本文以Kafka为例,系统梳理消息队列的核心原理、架构细节及实际应用。 Kafka 基础架构及术语关系图 术语简要说明 Produce…

免费公共DNS服务器推荐

当自动获取的DNS或本地运营商的DNS出现问题,可能导致软件无法连接服务器。此时,手动修改电脑的DNS设置或许能解决问题。许多用户觉得电脑上网速度慢、游戏卡顿,归咎于DNS问题。确实,我们可以自行设置一个DNS来改善网络体验。不少用…

【统计以空格隔开的字符串数量】2021-11-26

缘由一提标准的大一oj提木-编程语言-CSDN问答 void 统计以空格隔开的字符串数量() {//缘由https://ask.csdn.net/questions/7580109?spm1005.2025.3001.5141int n 0, x 0, g 0, k 1;string s "";cin >> n;getchar();while (n--){getline(cin, s);while …

OSCP备战-kioptrixvm3详细解法

探测IP arp-scan -l 得出目标IP:192.168.155.165 也可以使用 netdiscover -i eth0 -r 192.168.155.0/24 也可以使用 nmap -sN 192.168.155.0/24 --min-rate 1000 修改hosts文件 找到IP后,通过之前读取README.txt了解到,我们需要编辑host…

《从零构建大模型》PDF下载(中文版、英文版)

内容简介 本书是关于如何从零开始构建大模型的指南,由畅销书作家塞巴斯蒂安• 拉施卡撰写,通过清晰的文字、图表和实例,逐步指导读者创建自己的大模型。在本书中,读者将学习如何规划和编写大模型的各个组成部分、为大模型训练准备…

大数据应用开发和项目实战-电商双11美妆数据分析

数据初步了解 (head出现,意味着只出现前5行,如果只出现后面几行就是tail) info shape describe 数据清洗 重复值处理 这个重复值是否去掉要看实际情况,比如说:昨天卖了5瓶七喜,今天卖了5瓶七…

招行数字金融挑战赛数据分析赛带赛题二

赛题描述:根据提供的脱敏资讯新闻数据,选手需要对提供的训练集进行特征工程,构建资讯分类模型,对与测试集进行准确的新闻分类。 最终得分:0.8120。十二点关榜没看到排名,估算100? 训练集很小&am…

卡尔曼滤波算法(C语言)

此处感谢华南虎和互联网的众多大佬的无偿分享。 入门常识 先简单了解以下概念:叠加性,齐次性。 用大白话讲,叠加性:多个输入对输出有影响。齐次性:输入放大多少倍,输出也跟着放大多少倍 卡尔曼滤波符合这…

ENSP-OSPF综合实验

AR4中通过ospf获取的其他区域路由信息,并且通过路由汇总后简化路由信息 实现全网通,以及单向重发布,以及通过缺省双向访问, 通过stub简化过滤四类五类lsa,简化ospf路由信息 通过nssa简化ospf信息 区域汇总简化R4路由信…

电池单元和电极性能

电芯设计中的挑战 对于电池制造商来说,提高电池能量和功率密度至关重要。在高功率密度和长循环寿命之间取得平衡是电池设计中的关键挑战,通常需要仔细优化材料、电极结构和热管理系统。另一个关键挑战是通过优化重量体积比来降低电池单元的总体成本。 工…

软件设计师-错题笔记-软件工程基础知识

1. 解析: A:体系结构设计是概要设计的重要内容,它关注系统整体的架构,包括系统由哪些子系统组成、子系统之间的关系等 B:数据库设计在概要设计阶段会涉及数据库的逻辑结构设计等内容,如确定数据库的表结…

销售管理系统使用全攻略:从基础配置到数据分析

如果你是一名刚接手公司销售管理系统的销售经理,你会深刻体会到一个好工具的重要性。如果老板突然要查看季度销售数据时,就不用手忙脚乱地翻找各种Excel表格。 今天就来分享我的经验,希望能帮助到同样需要快速上手的朋友。 系统基础配置指南 …

PowerShell 脚本中文乱码处理

问题描述 脚本带中文,执行时命令行窗口会显示出乱码 示例 Write-Host "测试成功!"解决方法 问了DeepSeek,让确认是不是 UTF8 无 BOM 格式 事实证明方向对了 但是确认信息有偏差 改成 UTF8 with BOM 使用任意支持修改编码的文本…

前端性能指标及优化策略——从加载、渲染和交互阶段分别解读详解并以Webpack+Vue项目为例进行解读

按照加载阶段、渲染阶段和交互阶段三个维度进行系统性阐述: 在现代 Web 开发中,性能不再是锦上添花,而是决定用户体验与业务成败的关键因素。为了全面监控与优化网页性能,我们可以将性能指标划分为加载阶段、渲染阶段、和交互阶段…