Linux正则三剑客篇

article/2025/8/4 16:07:14

一、历史命令

  • history 命令 :用于输出历史上使用过的命令行数量及具体命令。通过 history 可以快速查看并回顾之前执行过的命令,方便重复操作或追溯执行过程。

  • !行号 :通过指定历史命令的行号来重新执行该行号对应的命令。例如,若 history 显示第 5 行命令为 ls -l,则执行 !5 将重新运行 ls -l 命令。

  • !! :用于重复执行上一次使用过的命令。这是一个便捷的方式,尤其在需要多次执行同一命令时,可提高工作效率。

二、Bash 特性

  • 命令处理器 :Bash 是一种运行在文本窗口中的命令处理器,能够执行用户直接输入的命令,实现与系统的交互。

  • 脚本支持 :Bash 可以从文件中读取 Linux 命令,这样的文件被称为脚本。通过编写脚本,可以实现命令的批量执行,自动化任务处理,提高工作效率。

  • 功能支持 :Bash 支持多种功能,如通配符(用于模式匹配和文件操作)、管道(用于命令间的数据传递)、命令替换(将命令输出作为其他命令的输入)、条件判断(基于条件执行不同命令)等逻辑控制语句,为用户提供了强大的命令组合和处理能力。

三、快捷键

  • Ctrl + a :将光标快速移动到当前行的行首位置,方便对命令行开头的内容进行修改或补充。

  • Ctrl + e :将光标快速移动到当前行的行尾位置,便于在命令行末尾继续输入或编辑内容。

  • Ctrl + u :用于删除光标之前的所有字符,快速清空当前光标前面的内容,适合在输入错误或需要大幅修改命令时使用。

  • Ctrl + k :用于删除光标之后的所有字符,能够迅速截断光标后面的内容,方便重新输入或调整命令的后半部分。

  • Ctrl + l :清空屏幕终端内容,与 clear 命令功能相同,可使终端界面保持整洁,便于查看新的输出信息。

四、命令补全

  • Tab :在输入命令时,可通过按下 Tab 键来自动补全命令。Bash 会根据 $PATH 环境变量中配置的目录路径,查找并匹配可能的命令名称,若唯一匹配则自动补全,若存在多个匹配项则提示用户进行选择,这样可减少命令输入量,提高命令行操作的效率,避免因拼写错误导致的命令无法识别等问题。

五、Linux 正则表达式

  • 定义与工具 :正则表达式(Regular Expression,Reg Exp)是一种由特殊字符及文本字符组成的模式,用于描述和匹配字符串。它是强大的文本处理工具,广泛应用于 Linux 系统中的文本处理任务。

  • 分类 :正则表达式主要分为两类,基本正则表达式(BRE,Basic Regular Expression)和扩展正则表达式(ERE,Extended Regular Expression)。

    • 基本正则表达式BRE集合: 匹配字符、匹配次数、位置锚定。

    •  ERE 在 BRE 的基础上增加了更多的特殊字符和功能,提供了更强大的匹配能力。

  • 意义与应用场景 :正则表达式的意义在于高效处理大量的字符串和文本内容。在 Linux 运维工作中,常常需要处理各种带有字符串内容的文件,如配置文件、程序代码、命令输出结果、日志文件等。通过正则表达式,管理员可以快速准确地过滤、替换和处理所需的特定字符串,从而提高工作效率,完成诸如查找特定日志条目、修改配置参数、提取代码片段等任务。

  • 支持工具 :在 Linux 下,正则表达式主要受到三剑客(sed、awk、grep)的支持,其他普通命令通常无法直接使用正则表达式。通配符虽然在大部分普通命令中都支持,但主要用于查找文件或目录,而正则表达式则侧重于在文件内容或数据流中进行复杂的过滤和处理。

六、Linux 三剑客

  • grep 命令

    • 作用 :作为文本过滤工具,grep 可在文件或文本数据流中查找与指定模式(pattern)匹配的内容,并输出匹配的行。这在需要从大量文本中筛选出符合特定条件的信息时非常有用,例如在日志文件中查找包含特定关键词的错误记录、从配置文件中提取相关设置等。

    • 扩展正则表达式ERE集合:

      • 使用grep命令只能使用基本正则表达式BRE。

      • 需要使用扩展正则表达式ERE,必须使用grep -E才能生效。

    • 格式grep '查找的内容' 查找的目录/文件。

      • 其中 '查找的内容' 是要匹配的模式,可以是简单的字符串,也可以包含正则表达式的特殊字符;后面跟要查找的文件或目录路径。

    • 选项

      • -n :在输出匹配的行时,同时显示该行在文件中的行号,便于定位信息所在的物理位置。

      • -i :忽略匹配时的大小写差异,使查找更加灵活,不会因大小写不一致而遗漏潜在的匹配项。

    • 实例

      • /etc/passwd 文件内容复制到 /tmp/test_grep.txt 文件中,以便进行测试操作:cat /etc/passwd > /tmp/test_grep.txt

      • 查找并输出 /tmp/test_grep.txt 文件中包含 "login" 的行,并显示行号:grep "login" /tmp/test_grep.txt -n

      • 查找并输出 /tmp/test_grep.txt 文件中不包含 "login" 的行,同时显示行号:grep "login" /tmp/test_grep.txt -n -v。这里 -v 选项用于反转匹配结果,即输出不匹配的行。

      • 忽略大小写,查找并输出 /tmp/test_grep.txt 文件中包含 "root" 的行:grep "ROOT" /tmp/test_grep.txt -i

      • 使用扩展正则表达式,同时过滤出 /tmp/test_grep.txt 文件中包含 "root" 或 "sync" 的行,并以彩色高亮显示匹配部分:grep -E "root|sync" /tmp/test_grep.txt --color=auto-E 选项用于启用扩展正则表达式的语法,| 表示逻辑或的关系,匹配任意一个模式。

      • 查找并输出 /tmp/test_grep.txt 文件中包含 "login" 的行,并统计匹配结果的行数:grep "login" /tmp/test_grep.txt | wc -l

      • 查找并输出 /tmp/test_grep.txt 文件中包含 "login" 的行,仅显示匹配的内容部分:grep "login" /tmp/test_grep.txt -o

      • 查找并输出 /tmp/test_grep.txt 文件中完整匹配 "oldboy" 这个单词的行:grep "oldboy" /tmp/test_grep.txt -w。这里 -w 选项用于指定完整单词匹配,确保匹配的是独立的单词 "oldboy",而不是包含在其他字符串中的子串。

      • 过滤掉 /tmp/test_grep.txt 文件中的空白行和注释行:grep -E "^#|^$" /tmp/test_grep.txt -v^# 匹配以 # 开头的注释行,^$ 匹配空行,-v 选项用于排除这些行,输出非空白行和非注释行的内容。

    • 注意事项 :在 Linux 平台下,文件的结尾确实可能存在不可见的特殊字符,如 $ 符。可以使用 cat -A 命令查看文件内容,包括这些特殊字符,以便更好地理解和处理文件格式相关的问题。

  • sed 命令

    • 作用sed 是一个流编辑器,用于对文本或数据流进行处理,包括编辑、过滤和转换文本内容。它能够按照用户指定的规则对文本进行操作,并将处理后的结果输出到标准输出设备(如屏幕),或者重定向到文件中。

    • 格式sed sed内置命令字符 输入的文件名称

      • 其中,sed内置命令字符用于指定具体的操作指令,如替换、删除、插入等;后面跟要处理的文件名称。

      • sed参数选项

      • sed匹配范围

    • 工作流程

      1. sed 逐行读取文件内容,每次读取一行数据。

      2. 将读取的每一行数据加载到一个临时的工作区域,称为 sed 模式空间,相当于在内存中创建了一个文本数据的副本,用于后续的处理操作。

      3. 根据用户指定的模式匹配规则,对模式空间中的数据进行处理。如果数据符合匹配条件,则执行相应的编辑操作,如替换内容、删除行等;不符合匹配条件的数据则保持不变,并直接输出到屏幕或其他指定的输出位置。

    • 示例 :假设要将文件中的某个单词替换为另一个单词,或者删除包含特定模式的行等,sed 都能高效地完成这些任务。

    • ifconfig 命令 :用于显示网络接口的 IP 地址信息等配置情况,与 sed 命令本身无直接关联,但在实际应用中,可能通过 sedifconfig 命令的输出结果进行进一步的处理和分析,例如提取特定的 IP 地址信息等。

  • awk 命令

    • 作用awk 是 Linux 下强大的文本报告生成器,擅长对文本数据进行格式化处理,能够将数据整理成类似专业表格的样式,便于阅读和分析。它广泛应用于数据处理、统计分析、文本转换等场景。

    • 格式awk awk可选参数 '条件动作' 文件/数据

      • 其中,awk可选参数 用于指定一些控制选项;'条件动作'awk 程序的核心部分,定义了数据处理的逻辑和操作;最后指定要处理的文件或数据来源。

    • 运行特点

      • awk 按行处理文件内容,逐行读取并进行分析和操作。

      • 它可以根据用户指定的分隔符来分割每一行的数据,默认情况下以空格作为分隔符,并且会将连续的多个空格视为一个分隔符来处理,这样可以方便地提取出字段数据。

      • 例如,awk 'NR==5{print $1}' filename 表示处理文件 filename 的第 5 行,并输出该行的第一个字段。

      • 如果需要一次性输出多个字段,并且希望以逗号(,)作为字段之间的分隔符,则可以通过设置输出分隔符来实现。

    • 变量

      • 内置变量awk 提供了多种内置变量用于获取和操作数据。

        • NR 表示当前处理的行号。

        • $1 表示第一个字段。

        • $0 表示整行内容。

        • $2 表示第二个字段。

        • $NF 表示当前行的最后一个字段。

        • (NF-1) 可用于引用倒数第二个字段。

        • FS 表示输入分隔符,用于指定数据行中各个字段之间的分隔字符。

        • OFS 表示输出分隔符,用于指定输出数据时各字段之间的分隔字符。

        • RS 表示输入换行符,默认为回车键,用于定义每行数据的结束标志。

        • ORS 表示输出换行符,默认为回车键,用于指定输出每行数据后的换行方式。

        • ARGV 是一个数组,用于保存命令行传递给 awk 程序的参数,其中 ARGV[0]awk 命令本身,后续元素依次为各个输入文件名等参数。

        • ARGC的数组是一种数据类型,如下图为一个盒子,盒子有它的名字,且内部有N个小格子,标号从O开始给一个盒子起名字叫做months,月份是1~12。

      • 自定义变量 :用户可以在 awk 程序中定义自己的变量,用于存储和处理数据。

        • 定义方式有两种:

          • 一是在命令行中使用 -v varName=value 的形式为变量赋初值。

          • 二是在 awk 程序的代码块中直接进行变量赋值操作。

    • 动作:printf和pintf

      • awk 中两种常用的输出操作。

      • printf 需要用户指定输出格式,通过格式说明符(如 %d%s%f 等)来控制每个数据项的输出样式,且不会自动添加换行符,需要手动在格式字符串中指定 \n 来换行.

      • print 命令则会自动在输出内容后添加空格和换行符,默认以空格分隔各输出项,并在每项输出后换行。

      • 例如,printf "Value: %d\n", varprint var 分别使用了不同的输出方式。

      • 在使用 printf 时,可以使用一些修饰符来进一步控制输出格式。如 - 用于指定左对齐,+ 用于强制显示数值的正负号等。

    • 模式:BEGIN和END

      • awk 中两种特殊的模式。

      • BEGIN 模式中的代码会在处理任何输入数据之前执行,通常用于初始化操作,如设置变量的初始值、定义输出格式等

      • END 模式中的代码则在所有输入数据处理完毕之后执行,常用于输出统计数据的汇总结果、执行清理操作等。

    • 正则语法 awk '/正则表达式/动作' 文件

      •  awk 支持使用正则表达式进行数据匹配和处理。通过在模式部分指定正则表达式,可以实现对符合条件的行进行特定的操作。例如,awk '/pattern/ {action}' filename 表示对文件 filename 中匹配 pattern 正则表达式的行执行相应的 action 操作。


http://www.hkcw.cn/article/dNecqhJMhy.shtml

相关文章

配网导线自取电式视频监测装置

在现代社会,电力如同城市的血脉,支撑着生活与生产的正常运转。而电力配网系统,作为电力传输和分配的“最后一公里”,其稳定运行尤为关键。然而,复杂的配电设备、暴露的线路以及多变的外部环境(如人为施工破…

8天Python从入门到精通【itheima】-60~61

目录 60节-变量的作用域 1.局部变量 2.局部变量的代码演示 3.全局变量 4.全局变量的代码演示 5.global关键字 【1】体会局部变量和全局变量的区别 【2】global关键字:将变量直接声明为全局变量 6.小节总结 61节-第五章末尾-关于函数的综合案例-ATM机 1.案例…

Java函数式编程(上)

课程:黑马程序员Java函数式编程全套视频教程,Lambda表达式、Stream流、函数式编程一套全通关_哔哩哔哩_bilibili 函数式编程的优点: 代码简洁功能强大并行处理链式调用延迟执行 一、函数伊始 函数是一段可重复使用的代码块,用于…

Excel 批量下载PDF、批量下载考勤图片——仙盟创梦IDE

在办公场景中,借助应用软件实现 Excel 批量处理考勤图片、电子文档与 PDF,具有诸多显著优势。 从考勤图片处理来看,通过 Excel 批量操作,能快速提取图片中的考勤信息,如员工打卡时间、面部识别数据等,节省…

JavaEE: wait和notify

wait和notify(都需要搭配synchronized使用) join(),哪个线程调用这个方法,哪个线程就堵塞 wait和notify都是Object的方法,随便定义一个对象都可以使用 wait、sleep、join的区别: wait:需要搭配…

6.运算放大器—电源抑制比(五)

运放的电源抑制比(PSRR, Power Supply Rejection Ratio)是衡量其抑制电源电压波动对输出信号影响能力的重要参数。 1、PSRR定义 PSRR表示运放对电源电压变化的抑制能力,定义为: 或者 PSRR值越高,运放对电源噪声的抑制能…

【Linux网络编程】数据链路层

目录 认识以太网 以太网帧格式 认识MAC地址 认识MTU MTU对IP协议的影响 MTU对UDP协议的影响 MTU对TCP协议的影响 ARP协议 ARP协议的作用 ARP数据包的格式 ARP协议的工作流程 认识以太网 "以太网"不是一种具体的网络,而是一种技术标准&#xff1…

【BootLoader】之stm32F407实现bootloader相关问题

前言 主要是在使用f407时遇见的一些问题记录;环境是STM32F407、rt_thread 1. 乱码问题 修改system_stm32f7xx.c ,stm32f4xx_hal_conf_template.h 时钟频率 #define HSE_VALUE 8000000U 解决问题 2. 忘记了是啥问题 3. bootloader跳转失败 解决方法&a…

WSL 安装 Debian 12 后,Linux 如何安装 curl , quickjs ?

在 WSL 的 Debian 12 系统中安装 curl 非常简单,你可以直接使用 APT 包管理器从官方仓库安装。以下是详细步骤: 1. 更新软件包索引 首先确保系统的包索引是最新的: sudo apt update2. 安装 curl 执行以下命令安装 curl: sudo…

数据中台(大数据平台)之数据安全管理

数据安全管理是结合大数据技术和行业特性,数据中台产品应具备数据分类分级、敏感数据智能识别的功能,并结合敏感数据管理、数据脱敏、数据加密等安全管控方式,保障数据安全可用。 1.安全分级分类:数据分级分类是一种将不同数据按…

Linux防火墙:全面解析IPTables的表、链、规则!

iptables 防火墙用于管理包过滤和 NAT 规则。IPTables 随所有 Linux 发行版一起提供。了解如何设置和配置 iptables 将帮助您有效地管理 Linux 防火墙。 iptables 工具用于管理 Linux 防火墙规则。乍一看,iptables 可能看起来很复杂(甚至令人困惑&#…

【火山引擎 大模型批量处理数据教程-详细】

相关的文档 !!先注册账号第一步!! 批量处理文档费用接口对象存储地址提交批量处理网页 1. 准备jsonl数据集 官网网页地址样例,需要根据你自己的数据进行需改 import jsonsystem_prompt """ 你的任…

设计模式——代理设计模式(结构型)

摘要 本文详细介绍了代理设计模式,包括其定义、结构组成、实现方式、适用场景及实战示例。代理设计模式是一种结构型设计模式,通过代理对象控制对目标对象的访问,可增强功能或延迟加载等。文中通过类图、时序图、静态代理、JDK动态代理、CGL…

API网关性能测试与瓶颈定位:微服务世界的守门人之道

在现代微服务架构中,API网关(API Gateway)是所有外部请求进入系统的第一道关口,是服务路由、协议转换、安全认证、流量管控、熔断限流等功能的集中体现。它既是安全屏障,又是性能瓶颈的高发区。 性能测试中&#xff0c…

Vehicle HAL(2)--Vehicle HAL 的启动

目录 1. VehicleService-main 函数分析 2. 构建EmulatedVehicleHal 2.1 EmulatedVehicleHal::EmulatedVehicleHal(xxx) 2.2 EmulatedVehicleHal::initStaticConfig() 2.3 EmulatedVehicleHal::onPropertyValue() 3. 构建VehicleEmulator 4. 构建VehicleHalManager (1)初…

【科研绘图系列】R语言绘制论文组合图形(multiple plots)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图1画图2画图3画图4画图5系统信息介绍 这篇文章详细介绍了如何使用R语言进行科研绘图,特别是绘制论文组合图形(multiple plots)。文章从数…

设计模式——命令设计模式(行为型)

摘要 本文介绍了命令设计模式,这是一种行为型设计模式,用于将请求封装为对象,实现请求的解耦和灵活控制。它包含命令接口、具体命令、接收者、调用者和客户端等角色,优点是解耦请求发送者与接收者,支持命令的排队、记…

用提示词写程序(3),VSCODE+Claude3.5+deepseek开发edge扩展插件V2

edge扩展插件;筛选书签,跳转搜索,设置背景 链接: https://pan.baidu.com/s/1nfnwQXCkePRnRh5ltFyfag?pwd86se 提取码: 86se 导入解压的扩展文件夹: 导入扩展成功: edge扩展插件;筛选书签,跳转搜索,设置背景

一周学会Pandas2之Python数据处理与分析-Pandas2数据分组与聚合

锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Pandas 的分组与聚合功能是数据分析的核心工具,允许你根据特定条件分割数据,然后对每个子集应…

零基础上手 Cherry Studio:打造专属 AI 助手的第一步

名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、Cherry Studio是什么?为什么选择它?1.Cherry Studio简介…