文本编辑命令和正则表达式

一、 编辑文本的命令

正则表达式匹配的是文本内容,Linux的文本三剑客,都是针对文本内容。

文本三剑客

grep:过滤文本内容

sed:针对文本内容进行增删改查 (本文不相关)

awk:按行取列 (本文不相关)

文本三剑客都是按行进行匹配。

1.1 grep命令

grep的作用就是使用正则表达式来匹配文本内容。

选项:

  • -m:匹配几次之后停止,一行有多个匹配的内容也仅视为一次匹配
  • -v:取反,所有不包含匹配内容的行
  • -n:显示匹配内容所在的行号
  • -c:仅统计匹配的行数
  • -o:仅显示匹配的内容
  • -q:静默模式,不输出结果到终端。
  • -A:after,跟数字,显示匹配到的内容所在行以及之后的几行
  • -B:before,跟数字,显示匹配到的内容所在行以及之前的几行
  • -C:跟数字,显示匹配到的内容所在行之前以及之后的几行
  • -e:相当于逻辑或

  • -E匹配扩展正则表达式

  • -f:匹配两个文件,过滤出相同的内容,以第一个文件为准

  • -r:递归目录,目录下的文件内容,不处理软连接

  • -R:递归目录,目录下的文件内容包括软连接

  • 1.2 sort命令:排序

    sort:以行为单位,对文件内容进行排序,默认按照数字从小到大,再字母从a到z的顺序排列,数字在前,字母在后。排序时对每行的内容从第一个字符开始依次排序。

    格式:常用2种方式

  • -f:忽略大小写,相同字母默认大写排在前面

    -b:忽略每行之前的空格

    -n:按照数字大小进行排序,此时不是按照单个字符进行比较,而是行首所有连续的数字都能被识别,按照识别到的数字的大小进行排序。且此时字母排序优先级高于数字

    -r:反向排序

    -u:去重,相同内容仅显示一次

    -o:把排序后的结果转存到指定文件

    -k:指定字段(字符)进行排序

    -t:指定字段的分隔符

  • 1.3 uniq命令:去重
  • uniq去除连续重复的行,只显示一行

    选项:

  • -c:统计连续重复的行的次数,且合并连续重复的行

  • -u:显示仅出现一次的行,包括不是连续出现的重复行

  • -d:仅显示连续重复的行,不包括非连续出现的的重复行

1.4 tr命令:替换和删除

tr :用来对标准输出的字符进行替换,压缩和删除。

格式:

选项

  • -c :tr -c 字符集1 字符集2 ,保留字符集1的字符,其他的字符用字符集2来进行替换,字符集要用单引号''括起来
  • -d :tr -d 字符集 ,删除字符集的字符
  • -s :把字符集1的部分替换成字符集2的部分,也可以把连续重复出现的字符压缩成一个字符

sedtr功能更强,常用于正则表达式。

1.5 cut命令:快速裁剪

cut可以对字段进行截取和裁剪

选项:

-d :指定字段的分隔符,指定的分隔符用' '包裹,不指定-d默认分隔符为横向制表符(tab键)
-f:对字段进行截取,指定输出的字段,和-d连用,如1-3,输出1到3字段,2,4,输出2和4字段
-c :以字符为单位进行截取,不常用
-b :以字节为单位进行截取,不常用
--complement:排除指定的字段后再输出
--output-delimiter:更改输出内容的分隔符,指定改变的分隔符用=连接

1.6 split命令:文件拆分

split :大文件拆分成若干小文件

选项:

-l :按行来进行分割

-b :按照大小来进行分割(单位K M G …)

1.7 文件合并
  • cat命令
  • paste命令

cat合并和paste合并的区别?

cat是上下合并;paste是左右合并

1.8 练习

问:查看当前网络状态中有多少个ESTABLISHED和LISTEN。

其中 ^State 表示以State开头,-v是取反

二、正则表达式

正则表达式是由一类特殊字符以及文本字符所编写的一个模式,模式又来匹配文件当中的内容(字符)。校验我们输入的内容是否满足规定、格式、长度等等要求。

主要用来匹配文本的内容命令的结果

区别于通配符:通配符只能用于匹配文件名和目录名,不能匹配文件的内容和命令结果。

2.1 基本正则表达式
2.1.1 元字符(字符匹配)

. :匹配任意单个字符

\ :转义符:恢复字符的本意

[] :匹配指定的范围内的任意单个字符或者数字,区分大小写,也可以用1-5,a-t这样的方式范围匹配

^ :匹配以^之后内容开头的字符

^# :匹配以#开头的行

^$ :匹配空行

[ ] :中括号里输入空格,就可以匹配空格

注:匹配内容两边需要加引号,单引号双引号都可以

\w :匹配单词或汉字

\s :匹配任意的空白符

\d :匹配数字

\b :匹配单词的开始或结束

注:连续的数字、字母、下划线都算作单词的内部,如abc_123算作一个单词

反义字符:

\W :匹配任意不是字母,数字,下划线,汉字的字符,如+ - =

\S :匹配任意不是空白符的字符

\D :匹配任意非数字的字符

\B :匹配不是单词开头或结束的位置

[^] :取反,表示匹配除了^之后的内容

2.1.2 次数匹配
表示次数,匹配字符出现的次数:

* :匹配*前面的字符0次或者多次

匹配前一个元素零次或多次:
a*: 匹配零个或多个连续的字符 ‘a’。
123*: 匹配 ‘12’ 后面跟零个或多个 ‘3’ 的连续序列,如 ‘12’, ‘123’, ‘1233’, ‘12333’ 等。
贪婪匹配:
.*: 匹配任意字符(除换行符外)零次或多次。这通常用于匹配任意长度的文本。
a.*b: 匹配以 ‘a’ 开头,以 ‘b’ 结尾的字符串,中间可以是任意字符。
注意事项:
* 是贪婪的,它会尽可能多地匹配字符。如果需要非贪婪匹配(尽可能少地匹配),可以使用 *?。
与其他元字符结合使用:
.*: 匹配任意长度的字符序列。
[a-z]*: 匹配任意小写字母序列,长度可以为零。
\d*: 匹配任意数字序列。
\? :匹配前面的字符0次或者1次。如'ab\?c'可以匹配到abc和ac

\+ :匹配前面的字符至少出现一次

\{n\} :匹配前面的字符n次,且前面的字符必须是连续出现n次才能匹配

\{m,n\} :匹配前面的字符至少m次,至多n次,超出的不显示

\{,n\} :匹配前面的字符至多n次

\{m,\}:匹配前面的字符至少m次

2.1.3 位置锚定
对行匹配:

^ :行首锚定,以什么为开头,如^3 ^[a-z]

$ :行尾锚定,以什么为结尾,如t$ [3-9]$

特别的:对于^text&形式,是整行匹配,即匹配到的行的内容只能是text,字符和字符数量完全匹配。

^$:匹配空行,可以理解为行首和行尾之间为空,即空行

对词匹配:

\<或者\b :词首锚定,匹配单词的左侧,连续的数字、字母、下划线都算作单词的内部,写在匹配内容的左边

\>或者\b :词尾锚定,匹配单词的右侧,写在匹配内容的右边

\btext\b或者\<text\>表示整词匹配,只能匹配到内容为text的文本,字符和字符数量完全匹配。

2.1.4 分组和逻辑关系

\(\) :表示分组,把括号内的内容视为一个整体

\| :表示逻辑或

2.2 扩展正则表达式

扩展正则表达式和基本正则表达式的规则完全一致,唯一的区别就是扩展正则表达式大部分时候不需要转义符\。除了\b \< \>锚定词首词尾的时候不能去掉转义符\,表示()而不是分组时也要加\

grep -E支持扩展正则表达式。

egrepgrep -E一个效果。

2.3 练习

  1. 使用正则表达式把下列邮箱全部匹配出来
  2. 匹配下列电话

显示/etc/passwd中以sh结尾的行;

查找/etc/inittab中含有“以s开头,并以d结尾的单词”模式的行

查找ifconfig命令结果中的1-255之间的整数;

在/etc/passwd中取出默认shell为bash的行;

高亮显示passwd文件中冒号,及其两侧的字符

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web服务器与Apache(虚拟主机基于ip、域名和端口号)

一、Web基础 1.HTML概述 HTML&#xff08;Hypertext Markup Language&#xff09;是一种标记语音,用于创建和组织Web页面的结构和内容&#xff0c;HTML是构建Web页面的基础&#xff0c;定义了页面的结构和内容&#xff0c;通过标记和元素来实现 2.HTML文件结构 <html>…

Transformer教程之什么是Transformer

在过去的几年里&#xff0c;Transformer 模型已经成为了自然语言处理&#xff08;NLP&#xff09;领域的主流技术。无论是机器翻译、文本生成还是语音识别&#xff0c;Transformer 都表现出了非凡的性能。那么&#xff0c;什么是 Transformer&#xff1f;它是如何工作的&#x…

LeetCode 剑指 Offer 40

// void help(int[] a,int l,int r,int k){ // if(k0) return; // if(r-l1 < k){ // for(int il;i<r;i){ // ans[cnt] a[i]; // } // return; // } // // 快排的基准值 // int base a[l]; // int i l, j r; // while(i<j){ // while(i<j &&…

1961 Springboot自习室预约系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 自习室预约管理系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库…

鸿蒙开发系统基础能力:【Timer (定时器)】

定时器 setTimeout setTimeout(handler[,delay[,…args]]): number 设置一个定时器&#xff0c;该定时器在定时器到期后执行一个函数。 参数 参数名类型必填说明handlerFunction是定时器到期后执行函数。delaynumber否延迟的毫秒数&#xff0c;函数的调用会在该延迟之后发生…

谷歌SEO在外贸推广中的应用效果如何?

谷歌SEO在外贸推广中非常有效。通过优化网站&#xff0c;可以提高在搜索结果中的排名&#xff0c;这意味着更多的潜在客户会看到你的产品和服务。 一个高排名的网站能带来更多自然流量&#xff0c;不需要花费广告费用。这种流量通常质量较高&#xff0c;因为用户是主动搜索相关…

Java 流式编程的7个技巧,必学!

作为Java开发者&#xff0c;我们还没有完全掌握Java Streams这个多功能工具的威力。在这里&#xff0c;你将发现一些有价值的技巧&#xff0c;可以作为参考并应用到你的下一个项目中。 Java Streams在很多年前就被引入了&#xff0c;但作为Java开发者&#xff0c;我们还没有完…

2.4G特技翻斗车方案定制

遥控翻斗车不仅能够提供基本的前进、后退、左转和右转功能&#xff0c;还设计有多种特技动作和互动模式&#xff0c;以增加娱乐性和互动性。 1、无线遥控&#xff1a;玩具翻斗车一般通过2.4G无线遥控器进行控制&#xff0c;允许操作者在一定距离内远程操控车辆。 2、炫彩灯光…

安装VEX外部编辑器

Houdini20配置VEX外部编辑器方法_哔哩哔哩_bilibili 下载并安装Visual Studio Code软件&#xff1a;Download Visual Studio Code - Mac, Linux, Windows 在Visual Studio Code软件内&#xff0c;安装相关插件&#xff0c;如&#xff1a; 中文汉化插件vex插件 安装Houdini Expr…

JavaScript中的Date对象,以及常用格式化日期的方法封装

一、Date对象 二、操作Date对象 1、创建Date对象 &#xff08;1&#xff09;常用方法 &#xff08;2&#xff09;使用示例 2、获取日期 &#xff08;1&#xff09;常用方法 &#xff08;2&#xff09;使用示例 3、设置日期 &#xff08;1&#xff09;常用方法 &…

LSTM时间序列基础学习

时间序列 时间序列可以是一维&#xff0c;二维&#xff0c;三维甚至更高维度的数据&#xff0c;在深度学习的世界中常见的是三维时间序列&#xff0c;这三个维度分别是&#xff08;batch_size,time_step,input_dimensions&#xff09;。 其中time_step是时间步&#xff0c;它…

智慧校园-就业管理系统总体概述

在当代教育与信息技术深度融合的背景下&#xff0c;智慧校园就业管理系统成为了连接学生、高校与企业的重要纽带&#xff0c;它以创新的服务理念和技术手段&#xff0c;重塑了职业规划与就业服务的传统模式。这一系统致力于为即将步入社会的学生们提供全面、个性化的支持&#…

C++系统编程篇——Linux第一个小程序--进度条

&#xff08;1&#xff09;先引入一个概念&#xff1a;行缓冲区 \r和\n \r表示回车 \n表示回车并换行 ①代码一 #include<stdio.h> #include<unistd.h> int main()…

MSA 助力实验室测量更稳定、更准确

在汽车制造、石油化工、电子制造等行业,产品的质量和性能需要通过准确的测量来保证。但是由于测量设备的误差、操作人员的主观影响以及环境条件的干扰等因素会导致测量系统出现各种问题,且这些问题会导致测量结果不准确,从而影响产品质量。 随着工业信息化的迅速发展, 各行业对…

【漏洞复现】FastAdmin——任意文件读取漏洞

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 FastAdmin是一个免费开源的后台管理框架&#xff0c;其lang存在…

基于C++实现的EventLoop与事件驱动编程

一&#xff0c;概念介绍 事件驱动编程&#xff08;Event-Driven&#xff09;是一种编码范式&#xff0c;常被应用在图形用户界面&#xff0c;应用程序&#xff0c;服务器开发等场景。 采用事件驱动编程的代码中&#xff0c;通常要有事件循环&#xff0c;侦听事件&#xff0c;…

leetcode-19-回溯

引自代码随想录 [77]组合 给定两个整数 n 和 k&#xff0c;返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4]] 1、大致逻辑 k为树的深度&#xff0c;到叶子节点的路径即为一个结果 开始索引保证不重复…

GuiLite C语言实现版本

简介 本项目是idea4good/GuiLite的C语言实现版本&#xff0c;基于2024-06-20节点的版本&#xff08;提交ID&#xff1a;e9c4b57&#xff09;。 本项目仓库&#xff1a;GuiLite_C 需求说明 作为芯片从业人员&#xff0c;国产芯片普遍资源有限&#xff08;ROM和RAM比较少-都是…

英国国王座驾车标的逆向工程

多功能设计和制造解决方案为独特的挑战提供了引人注目的优势。Impossible Creations是一家来自英国的定制扫描、设计和建模公司&#xff0c;专门帮助客户完成无限制得创作任务。在他们最近接到的一个项目中&#xff0c;为了修复象征英国国王座驾的大英帝国吉祥物&#xff0c;Im…

【Docker】docker 替换宿主与容器的映射端口和文件路径

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 docker 替换宿主与容器的映射端口和文件夹 1. 正文 1.1 关闭docker 服务 systemctl stop docker1.2 找到容器的配置文件 cd /var/lib/docker/contain…