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

一、 编辑文本的命令

正则表达式匹配的是文本内容,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.rhkb.cn/news/364100.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络架构】keepalive

目录 一、keepalive基础 1.1 作用 1.2 原理 1.3 功能 二、keepalive安装 2.1 yum安装 2.2 编译安装 三、配置文件 3.1 keepalived相关文件 3.2 主配置的组成 3.2.1 全局配置 3.2.2 配置虚拟路由器 四、实际操作 4.1 lvskeepalived高可用群集 4.2 keepalivedngi…

element 问题整合

没关系&#xff0c;凡事发生必有利于我 文章目录 一、el-table 同级数据对齐及展开图标的位置问题二、el-table 勾选框为圆角及只能勾选一个三、el-tree 弹框打开&#xff0c;使得列表关闭&#xff0c;且弹框滚动条回到顶部 一、el-table 同级数据对齐及展开图标的位置问题 ele…

Facebook的投流技巧有哪些?

相信大家都知道Facebook拥有着巨大的用户群体和高转化率&#xff0c;在国外社交推广中的影响不言而喻。但随着Facebook广告的竞争越来越激烈&#xff0c;在Facebook广告上获得高投资回报率也变得越来越困难。IPIDEA代理IP今天就教大家如何在Facebook上投放广告的技巧&#xff0…

使用 Ubuntu x86_64 平台交叉编译适用于 Linux aarch64(arm64) 平台的 QT5(包含OpenGL/WebEngine支持) 库

使用 Ubuntu AMD64 平台交叉编译适用于 Linux ARM64 平台的 QT5(包含 OpenGL/WebEngine 支持) 库 目录 使用 Ubuntu AMD64 平台交叉编译适用于 Linux ARM64 平台的 QT5(包含 OpenGL/WebEngine 支持) 库写在前面前期准备编译全流程1. 环境搭建2. 复制源码包并解压&#xff0c;创…

响应式高端家居装修网站源码pbootcms模板

模板介绍 分享一款黄色的响应式高端家居装修网站源码pbootcms模板&#xff0c;该模板能自适应手机端&#xff0c;响应式的设计可让您自由编辑&#xff0c;适合任何关于装修&#xff0c;空间设计&#xff0c;家装&#xff0c;家居等业务的企业。 模板截图 源码下载 响应式高端…

C++——探索智能指针的设计原理

前言: RAII是资源获得即初始化&#xff0c; 是一种利用对象生命周期来控制程序资源地手段。 智能指针是在对象构造时获取资源&#xff0c; 并且在对象的声明周期内控制资源&#xff0c; 最后在对象析构的时候释放资源。注意&#xff0c; 本篇文章参考——C 智能指针 - 全部用法…

已解决问题 | 该扩展程序未列在 Chrome 网上应用店中,并可能是在您不知情的情况下添加的

在Chrome浏览器中&#xff0c;如果你看到“该扩展程序未列在 Chrome 网上应用店中&#xff0c;并可能是在您不知情的情况下添加的”这样的提示&#xff0c;通常是因为该扩展程序没有通过Chrome网上应用店进行安装。以下是解决这个问题的步骤&#xff1a; 解决办法&#xff1a;…

计算机网络知识整理笔记

目录 1.对网络协议的分层&#xff1f; 2.TCP/IP和UDP之间的区别&#xff1f; 3.建立TCP连接的三次握手&#xff1f; 4.断开TCP连接的四次挥手&#xff1f; 5.TCP协议如何保证可靠性传输&#xff1f; 6.什么是TCP的拥塞控制&#xff1f; 7.什么是HTTP协议&#xff1f; 8…

MySQL高级-SQL优化- limit优化(覆盖索引加子查询)

文章目录 0、limit 优化0.1、从表 tb_sku 中按照 id 列进行排序&#xff0c;然后跳过前 9000000 条记录0.2、通过子查询获取按照 id 排序后的第 9000000 条开始的 10 条记录的 id 值&#xff0c;然后在原表中根据这些 id 值获取对应的完整记录 1、上传5个sql文件到 /root2、查看…

【工具推荐】ONLYOFFICE 桌面编辑器 8.1:引入全新功能,提升文档处理体验

ONLYOFFICE 桌面编辑器 8.1 现已发布&#xff1a;功能完善的 PDF 编辑器、幻灯片版式、改进从右至左显示、新的本地化选项等 【工具推荐】ONLYOFFICE 桌面编辑器 8.1&#xff1a;引入全新功能&#xff0c;提升文档处理体验 一、什么是ONLYOFFICE&#xff1f; ONLYOFFICE 是…

PG备份与恢复

一、开启WAL归档 1、创建归档目录 我们除了存储数据目录pgdata之外&#xff0c;还要创建backups&#xff0c;scripts&#xff0c;archive_wals文件 mkdir -p /home/mydba/pgdata/arch mkdir -p /home/mydba/pgdata/scripts mkdir -p /home/mydba/backups chown -R mydba.myd…

API接口知识小结

应用程序接口API&#xff08;Application Programming Interface&#xff09;&#xff0c;是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统&#xff08;中后台系统&#xff09;或后台不同系统之间的交互点。包括外部接口、内部接口&#xf…

ANSYS Electronics 电磁场仿真工具下载安装,ANSYS Electronics强大的功能和灵活性

ANSYS Electronics无疑是一款在电磁场仿真领域表现卓越的软件工具。它凭借强大的功能和灵活性&#xff0c;帮助用户在产品设计阶段就能精确预测和优化电磁场性能&#xff0c;从而极大地降低了实际测试成本&#xff0c;并显著提升了产品的可靠性。 这款软件不仅在电子设计领域有…

Python | Leetcode Python题解之第204题计数质数

题目&#xff1a; 题解&#xff1a; MX5000000 is_prime [1] * MX is_prime[0]is_prime[1]0 for i in range(2, MX):if is_prime[i]:for j in range(i * i, MX, i):#循环每次增加iis_prime[j] 0 class Solution:def countPrimes(self, n: int) -> int:return sum(is_prim…

如何利用ChatGPT改善日常生活:一个普通人的指南

当你打开 ChatGPT&#xff0c;显现的是一个简洁的聊天界面。 许多人利用 ChatGPT 进行日常对话。 然而&#xff0c;ChatGPT 的功能远不止于此。 对话只是其众多能力中的一种&#xff0c;如果仅将其视为高级版的聊天机器人&#xff0c;那未免低估了它。 AI 在信息处理方面的…

【SpringMVC】_SpringMVC实现留言墙

目录 1. 需求分析 2. 接口定义 2.1 提交留言 2.2 获取全部留言 3. 响应数据 4. 服务器代码 4.1 MessageInfo 文件 4.2 MessageController 文件 5. 前端页面代码 5. 运行测试 1. 需求分析 实现如下页面&#xff1a; 1、输入留言信息&#xff0c;点击提交后&#xff0…

【算法专题--链表】两数相加 -- 高频面试题(图文详解,小白一看就懂!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双指针 -- 模拟进位 (使用哨兵位头节点) &#x1f95d; 什么是哨兵位头节点&#xff1f; &#x1f347;思路解析 &#x1f34d;案例图解 四、总结与提炼 五、共勉 一、前言 两数相加 这道题&#xff0c;可以说是--…

如何用一个二维码实现企业固定资产管理?

固定资产管理中普遍存在盘点难、家底不清、账实不一致、权责不清晰等问题。如果平时不规范化执行&#xff0c;年终面对上上下下、大大小小、成百上千件物资要进行盘点整理的时候&#xff0c;会是十分痛苦且低效的事情。 今天这篇文章就来给大家推荐几家便宜好用的二维码固定资…

CST--如何在PCB三维模型中自由创建离散端口

在使用CST电磁仿真软件进行PCB的三维建模时&#xff0c;经常会遇到不能自动创建离散端口的问题&#xff0c;原因有很多&#xff0c;比如&#xff1a;缺少元器件封装、开路端口、多端子模型等等&#xff0c;这个时候&#xff0c;很多人会选择手动进行端口创建&#xff0c;但是&a…

Python:探索高效、智能的指纹识别技术(简单易懂)

目录 概括 导入库 函数一 参数&#xff1a; 函数二 函数三 主函数 运行结果 src&#xff1a; model_base 7.bmp ​编辑 总结 概括 指纹识别是一种基于人体生物特征的身份验证技术。它通过捕捉和分析手指上的独特纹路和细节特征&#xff0c;实现高准确度的身份识别。…