正则表达式(一):基础命令及字符

news2024/12/26 4:12:03

正则表达式一-基础命令及字符

  • 一、常用命令补充:
    • 1.grep:
    • 2.sort:
    • 3.uniq:快速去重
    • 4.tr:
    • 5.cut:
    • 6.split:文件拆分
    • 7.paste:合并文件
    • 8.例题应用:
  • 二、正则表达式:
    • 1.定义:
    • 2.作用:
    • 3.通配符:
    • 4.正则表达式:

一、常用命令补充:

1.grep:

(1)作用:对文本进行过滤,支持正则表达式,针对行进行处理。

(2)常用选项:

选项作用
-i忽略字符大小写,可有可无。
-v显示不被pattern匹配到的行,即取反。
-w匹配整个单词。
-ffile根据模式文件,处理两个文件相同内容,把第一个文件作为匹配条件。
-n显示匹配的行号。
-c统计匹配的行数。
-e实现多个选项间的逻辑or关系。
-r递归目录,但是不处理软连接。
-E使用ERE,相当于egrep,使用扩展正则。
-o仅显示匹配到的字符串。
-A匹配当前行及他后面的行。
-B匹配当前行及他前面的行。
-R递归目录,处理软连接。

(3)运用:

1.-m  # 匹配指定次后停止
[root@test1 opt]# grep -m 1 root /etc/passwd#多个匹配只取第一个
root:x:0:0:root:/root:/bin/bash
2.-v #显示不被pattern匹配到的行,即取反
[root@test1 opt]# grep -v root /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
3.grep -c root /etc/passwd 
[root@test1 opt]# grep -c root /etc/passwd 
4.grep -A3 root /etc/passwd   #匹配到的行的后3行也显示出来
[root@test1 opt]# grep -A3 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
5.将非空行写入到test.txt文件
[root@test1 opt]# cat wang.txt
nubobo
jioioo
nioioboi
94949494

12121212

21212121

040404040404

6161616161616161

[root@test1 opt]# vim wang.txt 
[root@test1 opt]# cat wang.txt | grep -v '^$' > test.txt
[root@test1 opt]# cat test.txt 
nubobo
jioioo
nioioboi
94949494
12121212
21212121
040404040404
6161616161616161

2.sort:

以行为单位,对文件内容进行排序,也可根据不同类型进行排序。

(1)常用选项:

选项作用
-f忽略大小写,默认情况下,大写字母排在前面。
-b忽略每行前面的空格,只排序不改缩进。
-n按数字进行正向排序。
-r按数字进行反向排序。
-u去重,去掉重复内容。
-o将排序后的结果输出到指定文件。

(2)应用:

1.忽略每行空格:

在这里插入图片描述

在这里插入图片描述

2.正向,反向排序:

在这里插入图片描述

3.去重:

在这里插入图片描述

在这里插入图片描述

3.uniq:快速去重

(1)格式:

1.cat 文件名 | uniq 选项

2.uniq 选项 参数

(2)常用选项:

选项作用
-c统计重复的行的次数,并且合并重复的行
-u显示仅出现一次的行(不连续重复出现的行也算出现一次)
-d显示重复出现的行(连续重复出现)

(3)应用:

1.统计重复出现的行的次数:
[root@test1 opt]# cat wang.txt | uniq -c 
      2 wangz
      3 billkin
      4 pp
2.去重排序:
[root@test1 opt]# cat wang.txt | uniq -c wang.txt | sort -n
      2 1billkin
      3 2wangz
      4 3pp

4.tr:

(1)作用:对来自标准输入的字符进行替换,压缩,删除。

(2)常用选项:

选项作用
-d删除字符集1的字符
-c保留字符集1的字符,其他字符用字符集2替换
-s把重复出现的字符串压缩成一个,把前一个替换成后一个
-t替换,默认选项,可以不加

(3)应用:

1.替换

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.压缩:

在这里插入图片描述

3.把重复出现的字符串替换为一个:

在这里插入图片描述

4.echo $PATH | tr -s “:” “\n” —把":"替换为换行

在这里插入图片描述

5.cut:

(1)格式:

1.cut 选项 参数

2.cat file | cut 选项

(2)常用选项:

选项作用
-d指定分隔符
-f按字段截取,跟上数字即表示截取第几段
-b以字节为单位截取
-c以字符为单位截取
-complemnt排除所有指定字段
-out-delimiter更改输出内容的分割符

(3)应用:

1.指定字段截取:

在这里插入图片描述

2.删除:
在这里插入图片描述

3.转换分隔符:

在这里插入图片描述

6.split:文件拆分

(1)常用选项:

选项作用
-l按行拆分
-b指定大小拆分

(2)格式:

1.split -b 指定大小 文件名 新文件名

2.split -l 指定行数 文件名 新文件名

7.paste:合并文件

(1)格式:

paste [选项] 文件1 文件2

(2)常用选项:

选项作用
-d用于指定文件的分隔符(默认情况下为制表符"\n")
-s将列和行的内容进行互相交换

(3)cat和paste的区别:

在这里插入图片描述

在这里插入图片描述

8.例题应用:

(1)统计当前主机连接状态:

[root@test1 opt]# ss -nta | grep -v '^State' | cut -d " " -f 1 | sort | uniq -c
      1 ESTAB
     11 LISTEN

(2)统计主机连接数:

[root@test1 ~]# ss -nt | tr -s " " | cut -d " " -f 4 | sort -n | uniq -c
      1 Local
      2 192.168.174.12:22

二、正则表达式:

1.定义:

​ 由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。

2.作用:

​ 主要用来匹配字符串(命令结果,文本内容)。

3.通配符:

(1)定义:只用于匹配文件名,目录名,不匹配文件内容。

(2)作用:为了方便用户对文件或者目录的描述,例如用户仅仅需要以".sh"结尾的文件时,使用通配符就能很方便地实现。各个版本的shell都有通配符,这些通配符是一些特殊的字符,用户可以在命令行的参数中使用这些字符,进行文件名或者路径名的匹配。shell将与与命令行中指定的匹配规则符合的所有文件名或者路径名作为命令的参数,然后执行这个命令。

(3)常用选项:

选项作用
*匹配一个或多个字符
匹配任意一个字符

4.正则表达式:

(1)元字符:

选项作用
.匹配任意一个单个字符,可以是汉字
()使用转义符,只表示()
[]匹配指定范围内的任意单个字符
[^]匹配指定范围外的任意单个字符
[[:blank:]]空白字符(空格和制表符)
[:space:]包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广

(2)使用:

1.[root@test1 opt]# ls /opt/ | grep "t."  #过滤出仅包含字母"t"后跟任何其他字符的行

在这里插入图片描述

2.ls /opt/ | grep '[fhtx].txt'   #匹配[]中任意一个字符

在这里插入图片描述

3.ls | grep '[^a.z].txt'  #“[^a.z]”表示不匹配字母“a”或“z”的任何字符

在这里插入图片描述

4.grep [[:space:]] wang.txt #过滤空格

在这里插入图片描述

(3)匹配次数:

选项作用
*匹配前面字符的任意次数,包括0次,贪婪模式,尽可能长的匹配。
.*任意长度的任意字符,不包括0次,即匹配所有。
?匹配其前面的字符出现0或1次,即可有可无。
\+匹配其前面的字符至少出现1次,即肯定有且>=1次。
\{n\}匹配其前面的字符出现n次。
\{m,n\}匹配其前面的字符至少出现m次,至多n次。
\{,n\}匹配其前面的字符至多出现n次,<=n。
\{n,\}匹配其前面的字符至少出现n次。

次,即可有可无。 |
| \+ | 匹配其前面的字符至少出现1次,即肯定有且>=1次。 |
| \{n\} | 匹配其前面的字符出现n次。 |
| \{m,n\} | 匹配其前面的字符至少出现m次,至多n次。 |
| \{,n\} | 匹配其前面的字符至多出现n次,<=n。 |
| \{n,\} | 匹配其前面的字符至少出现n次。 |

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

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

相关文章

UID和cookie的查找

1、首先在浏览器中输入www.weibo.cn(如图1)&#xff0c; 然后按回车键&#xff0c;打开微博&#xff08;如图2&#xff09;。 图1 图2 2、在上图空白处单击鼠标右键&#xff0c;在显示出的对话框中点击【检查】&#xff0c;如下图。 3、如下图&#xff0c;点击【网络】或者【N…

chatgpt赋能python:Python自定义函数:让编程更高效

Python自定义函数&#xff1a;让编程更高效 Python是一种非常流行的编程语言&#xff0c;它有很多强大的功能&#xff0c;包括自定义函数。Python的自定义函数可以让你编写自己的代码&#xff0c;并将其作为一个函数来使用。这在编程中非常有用&#xff0c;因为它可以让你将代…

java设计模式(十九)备忘录模式

目录 定义模式结构角色职责代码实现适用场景优缺点定义 备忘录模式(Memento Pattern) 保存一个对象的某个状态,以便在适当的时候恢复对象。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。备忘录模式属于行为型模式。 模式结构 角色职责 …

数据结构04:串的存储结构与KMP算法

前言 参考用书&#xff1a;王道考研《2024年 数据结构考研复习指导》 参考用书配套视频&#xff1a;4.1_1_串的定义和基本操作_哔哩哔哩_bilibili 特别感谢&#xff1a; Google Bard老师[解释KMP&#xff0c;修改BUG]、Chat GPT老师[修改BUG]、BING老师[封面图]~ 当我请求BI…

chatgpt赋能python:Python如何使用空行优化SEO

Python 如何使用空行优化 SEO 在网页排名算法中&#xff0c;空行的使用可以对网页的排名产生影响。在 Python 中&#xff0c;空行的使用也被用来优化代码和提高代码的可读性。本文将介绍如何在 Python 中使用空行来优化代码和优化 SEO。 空行的作用 在 Python 中&#xff0c…

【论文阅读】AlexNet: ImageNet Classification with Deep Convolutional Neural Networks

1. 简介 AlexNet是一个用于图像识别的卷积神经网络&#xff0c;其应用在ILSVRC比赛中&#xff0c;AlexNet所用的数据集是ImageNet&#xff0c;总共识别1000个类别 2. 网络结构 整体网络结果如下图所示&#xff0c;一共有8层&#xff0c;前五层是卷积层&#xff0c;后三层是全…

Kubernetes之pod

Kubernetes之pod 在通过docker运行程序时&#xff0c;我们通常会制作Dockerfile文件构建镜像。也可以基于某个镜像运行容器在容器中安装组件之后&#xff0c;再基于容器生成镜像 使用如下命令可生成镜像&#xff0c;想了解更多参数请添加–help docker build -f Dockerfile路…

(超超详!!)Linux进程间通信-----管道 + 共享内存详解

索引 通信背景管道匿名管道命名管道 共享内存基本概念共享内存如何管理共享内存的相关函数共享内存的删除共享内存的使用 通信背景 进程是具有独立性的,每个进程都有独立的PCB,独立的数据和数据结构,因此进程间想要交互数据,成本会非常高,但有时候需要多进程协同处理同一件事情…

java设计模式(十五)责任链模式

目录 定义模式结构角色职责代码实现适用场景优缺点 定义 责任链模式(Chain of Responsibility) 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有对象能够处理…

deque介绍

目录 简介&#xff1a; 初识deque deque的底层实现 deque插入 deque的operator[] deque的迭代器 deque的缺陷 与vector比的缺陷 与list相比的缺陷 deque的优势 简介&#xff1a; 这一节不会进行模拟实现&#xff0c;只会聊聊deque的底层 原因是我们学习deque是为了…

RabbitMQ中的AMQP协议与核心组成介绍

前言 在RabbitMQ中为了传输数据&#xff0c;使用的是基于TCP/IP协议构造的AMQP协议。RabbitMQ的核心组成部分包括&#xff1a;Server、Connection、Channel、Message、ExChange、Virtual Host、Bingings、Routing key、Queue AMQP协议 AMQP协议全称&#xff1a;Advanced Mes…

RK3588平台开发系列讲解(驱动基础篇)信号驱动 IO 实验

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、信号驱动 IO 简介二、实验程序2.1、应用程序2.2、驱动程序沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 信号驱动 IO 不需要应用程序查询设备的状态,一旦设备准备就绪,会触发 SIGIO 信号,进而调用注…

论文中文翻译——kAFL Hardware-Assisted Feedback Fuzzing for OS Kernels

本论文相关内容 论文下载地址——26th USENIX Security Symposium论文中文翻译——kAFL Hardware-Assisted Feedback Fuzzing for OS Kernels 文章目录 本论文相关内容前言kAFL&#xff1a;操作系统内核的硬件辅助反馈Fuzzing作者信息论文来源主办方信息摘要1 引言2 技术背景2…

系统U盘制作随记

随身系统U盘制作 最近花了好多时间&#xff0c;废了好多U盘才把这东西搞明白了。 主要是自己的笔记本问题比较多&#xff0c;用实验室的Hp机一下就弄好了。 用这篇博客总结一下自己&#xff0c;然后附上详细的流程以免大家踩坑。 Windows to Go 这个比较容易上手 1. 准备…

EIoT能源物联网在工厂智能照明系统改造项目的应用 安科瑞 许敏

【摘要】&#xff1a;随着物联网技术的发展&#xff0c;许多场所针对照明合理应用物联网照明系统&#xff0c;照明作为工厂的重要能耗之一&#xff0c;工厂的照明智能化控制&#xff0c;如何优化控制、提高能源的利用率&#xff0c;达到节约能源的目的。将互联网的技术应用到工…

MySQ基本操作详解

MySQL的基本操作 首先sql操作中的关键字的是大小写不敏感的&#xff0c;create 和CREATE是一样的。 1.库操作 1. 1查看数据库 show databases;show 和databases 之间有一个或者多个空格注意是databases而不是database结尾分号是英文形式&#xff0c;分号在SQL中是表示一行执…

第三节 循环结构

文章目录 1. while循环1.1 什么是循环?1.2 while 循环1.2.1 语法结构1.2.2 循环中的异类 1.3 while循环使用案例1.3.1 求1~100之间的和1.3.2 求1~100之间偶数之和1.3.3 循环中的"标志变量" 1.4 嵌套循环使用1.4.1 嵌套循环语法结构1.4.2 嵌套练习 1.5 知识扩展 --最…

Mobx+Mobx-React快速上手 简单可扩展的状态管理解决方案

Mobx是Redux之后的一个状态管理库&#xff0c;基于响应式状态管理&#xff0c;整体是一个观察者模式的架构&#xff0c;存储state的store是被观察者&#xff0c;使用store的组件是观察者。Mobx可以有多个store对象&#xff0c;store使用的state也是可以变对象&#xff0c;这些都…

LNMP架构搭建实操(终有弱水替沧海,再无相思寄巫山”大概意思就是,你会遇到很多人,但不会有人像我那么爱你了。)

文章目录 一、安装Nginx服务1.安装依赖包2.创建Nginx运行用户3.编译安装Nginx源码包4.优化路径便于使用5、添加 Nginx 系统服务 二、安装Mysql服务1.安装Mysql环境依赖包2.创建Mysql运行用户3.编译安装4.修改mysql配置文件5.更改mysql安装目录和配置文件的属主属组6.设置路径环…

【Leetcode】77 组合 | 掌握回溯的力量吧!

【1】限制&#xff1a;数字只能够使用一次。 77 组合 栗子&#xff0c;从 { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } \{1,2,3,4,5,6,7,8,9,10\} {1,2,3,4,5,6,7,8,9,10}中选择4个数&#xff1a; 选择1&#xff0c;从 { 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } \{2,3,4,5,6…