当前位置:网站首页>Shell编程之正则表达式(Shell脚本文本三剑客之grep)
Shell编程之正则表达式(Shell脚本文本三剑客之grep)
2022-07-27 11:01:00 【不回头的蛙兄】
目录
1 正则表达式概述
正则表达式,又称规则表达式。(Regular Expression),在代码中常简写为regex、regexp或RE。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式不只有一种,而且Linux中不同的程序可能会使用不同的正则表达式,工具:grep、sed、awk、egrep
1.1 正则表达式定义
正则表达式,又称正规表达式、常规表达式
使用字符串来描述、匹配一系列符合某个规则的字符串
1.1.1 正则表达式组成
- 普通字符:大小写字母、数字、标点符号及一些其他符号
- 元字符:在正则表达式中具有特殊意义的专用字符
元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式
2 基础正则表达式元字符
| 常见的元字符 | |
| \ | 转义字符,\!、\n等 |
| ^ | 匹配字符串开始的位置 |
| $ | 匹配字符串结束的位置 |
. | 匹配除\n之外的任意的一个字符 |
| * | 匹配前面子表达式0次或多次 |
| [ ] | 匹配列表中的一个字符 |
| [^ ] | 匹配任意不在列表中的一个字符(取反) |
| \{n,m\} | 匹配前面的子表达式n到m次,有\{\n}、\{n,\}、\{n,m\}三种格式 |
| + | 匹配前面子表达式1次以上 |
| ? | 匹配前面子表达式0次或者1次 |
| () | 将括号中的字符串作为一个整体 |
| | | 以或的方式匹配字条串 |
3 常见管道命令
3.1 grep
grep [选项] … 查找条件 目标文件
| 常用选项 | |
| -E | 开启扩展(Extend)的正则表达式 |
| -c | 计算找到 “搜寻字符串” 的次数 |
| -i | 忽略大小写的不同,所有大小写视为相同 |
| -o | 只显示被模式匹配到的字符串 |
| -v | 反向选择(反向查找,输出与查找条件不相符的行) |
| -n | 顺序输出行号 |
例1
方法一

方法二

例2


例3

例4


例5

例6


例7


3.2 cut(列截取工具)
cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字串写至标准输出
格式:cut [选项] 参数
| 常用选项 | |
| -b | 按字节截取 |
| -c | 按字符截取,常用于中文 |
| -d | 指定以什么为分隔符截取,默认为制表符 |
| -f | 通常和-d一起 |
例1
方法一

方法二


例2

例3


3.3 sort
sort是一个以行为单位对文件内容进行排序的工具
格式:sort [选项] 参数
| 常用选项 | |
| -t | 指定分隔符,默认使用[Tab]键或空格分割 |
| -k | 指定排序区域 |
| -n | 按照数字进行排序,默认是以文字形式排序 |
| -u | 等同于uniq,表示相同的数据仅显示一行。(注意:如果行尾有空格去重就不成功) |
| -r | 反向排序,默认是升序,-r是降序 |
| -o | 将排序后的结果转存至指定文件 |
例1

例2



例3

3.4 uniq
uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用
格式:uniq [选项] 参数
| 常用选项 | |
| -c | 对重复的行数进行计数 |
| -d | 仅显示重复行 |
| -u | 仅显示出现一次的行 |
例1



例2

3.5 tr
常用来对来自标准输入的字符进行替换、压缩和删除。
格式:tr [选项] [参数]
| 常用选项 | |
| -d | 删除字符 |
| -s | 删除所有重复出现的字符,只保留一个 |
例1

例2

例3


例4

例5


边栏推荐
猜你喜欢

第12章 泛型

Japan Fukushima waste dump safety monitoring agreement will recognize the "safety" of the sea discharge plan

第8章 多线程

Gaussian elimination acwing 884. Gaussian elimination for solving XOR linear equations

PWM的原理和PWM波的产生

Maker Hongmeng application development training notes 02

What is private traffic?

【机器学习-白板推导系列】学习笔记---支持向量机和主成分分析法

日本福岛废堆安全监视协议会认可排海计划“安全”

Analysis of the use of JUC framework from runnable to callable to futuretask
随机推荐
Can you really write binary search - variant binary search
局域网SDN技术硬核内幕 11 云网融合CP的关键——层次化端口绑定
Find the combination number acwing 885. find the combination number I
Several banks adjusted the redemption rules of cash management financial products: the confirmation time limit of redemption changed from "t+0" to "t+1"
LAN SDN hard core technology insider 23 looking forward to the future - RDMA (Part 1)
剑指 Offer 笔记: T57 - I. 和为 s 的两个数字
The difference between extern and static
Maker Hongmeng application development training 04
暂用 Solo,博客选择困难
Summary of leetcode SQL exercises (MySQL Implementation)
第8章 多线程
Open source Flink has datastream connector written with holo or Flink SQL Conn
MATLAB画带延时系统的伯德图
LAN SDN hard core technology insider 25 looking forward to the future - RDMA (Part 2)
第12章 泛型
Stm32f10x -- C Language-1
【Unity入门计划】CreatorKitFPS:第一人称射击3D小游戏
The C programming language (2nd) -- Notes -- 1.6
日本福岛废堆安全监视协议会认可排海计划“安全”
Maker Hongmeng application development training notes 03