当前位置:网站首页>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


边栏推荐
- 源码编译安装LAMP
- 数据包传输:应用层-内核-硬件
- Vscode removes style / syntax highlighting / code highlighting / black background when copying code
- Japan Fukushima waste dump safety monitoring agreement will recognize the "safety" of the sea discharge plan
- C programming language (2nd Edition) -- Reading Notes -- 1.5.3
- LAN SDN hard core technology insider 24 outlook for the future - RDMA (middle)
- CTF crypto RSA getting started
- 82. (cesium home) cesium points move on 3D models
- 剑指 Offer 笔记: T58 - II. 左旋转字符串
- JUC框架 从Runnable到Callable到FutureTask 使用浅析
猜你喜欢

Beyond Compare 3 下一个差异段/向下搜索箭头 找不到了

源码编译安装LAMP

美现首例孕妇猴痘病例:新生儿被注射免疫球蛋白,已安全出生

TapNet: Multivariate Time Series Classification with Attentional Prototypical Network

【机器学习-白板推导系列】学习笔记---概率图模型和指数族分布

shell编程之免交互

When std:: bind meets this

N ¨UWA: Visual Synthesis Pre-training for Neural visUal World creAtionChenfei

Could not load dynamic library ‘libcudnn.so.8‘;

WGet warning: unable to verify
随机推荐
LAN SDN hard core technology insider 25 looking forward to the future - RDMA (Part 2)
The C programming language (2nd) -- Notes -- 1.10
IDEA: Can‘t use Subversion command line client:svn 解决方案
C programming language (2nd Edition) -- Reading Notes -- 1.5.2
【机器学习-白板推导系列】学习笔记---支持向量机和主成分分析法
[unity entry program] creator kitfps: first person shooting 3D game
LeetCode 04: T26. 删除排序数组中的重复项(简单); 剑指 Offer 67. 把字符串转换成整数(中等); 面试题 01.08. 零矩阵 (简单)
Installation and use of GTEST and gmock
第7章 异常处理
LeetCode 01: T1. 两数之和 ; T1108. IP 地址无效化 ; T344. 反转字符串
Find the combinatorial number acwing 889. 01 sequence satisfying the condition
makefile模板
Could not load dynamic library ‘libcudnn.so.8‘;
Ask the big guys, is there transaction control for using flick sink data to MySQL? If at a checkpoint
(4) Operator
C programming language (2nd Edition) -- Reading Notes -- 1.5
pytorch和tensorflow一样展示summary
SMA TE: Semi-Supervised Spatio-Temporal RepresentationLearning on Multivariate Time Series
[machine learning whiteboard derivation series] learning notes - support vector machine and principal component analysis
美现首例孕妇猴痘病例:新生儿被注射免疫球蛋白,已安全出生