Linux(9):正规表示法与文件格式化处理

news2024/11/28 22:37:19

简单的说,正规表示法就是处理字符串的方法,他是以行为单位来进行字符串的处理行为,正规表示法透过一些特殊符号的辅助,可以让使用者轻易的达到【搜寻/删除/取代】某特定字符串的处理程序。

正规表示法基本上是一种【表示法】,只要工具程序支持这种表示法,那么该工具程序就可以用来作为正规表示法的字符串处理之用。例如 vi, grep, awk ,sed 等。

正规表示法的字符串表示方式依照不同的严谨度而分为:基础正规表示法与延伸正规表示法。
【正规表示法与通配符是完全不一样的东西】
【通配符(wildcard)代表的是 bash操作接口的一个功能】,但【正规表示法则是一种字符串处理的表示方式】。

基本正规表示法

对字符排序有影响的语系数据就会对正规表示法的结果有影响。
正规表示法也需要支持工具程序来辅助才行。

语系对正规表示法的影响

zh Tw.big5 及 C 这两种语系的输出结果分别如下:

LANG=C 时:0 1 2 3 4 ... A B C D ...Z a b c d ...z
LANG=zh_TW 时:0 1 2 3 4 ... a A b B c C d D ... z Z

上面的顺序是编码的顺序,可以很清楚的发现这两种语系明显就是不一样。
所以,使用正规表示法时,需要特别留意当时环境的语系为何,否则可能会发现与别人不相同的撷取结果。
一些特殊符号:
在这里插入图片描述

grep 的一些进阶选择

grep [-A] [-B] [--color=auto] '搜寻字符串' filename

在这里插入图片描述
grep 在数据中查寻一个字符串时,是以"整行”为单位来进行数据的撷取的。也就是说,假如一个文件内有10 行,其中有两行具有你所搜寻的字符串,则将那两行显示在屏幕上,其他的就丢弃了。

基础正规表示法字符汇总

在这里插入图片描述在这里插入图片描述在这里插入图片描述

正规表示法的特殊字符与一般在指令列输入指令的通配符并不相同
通配符当中的*代表的是【0~无限多个字符】的意思,但是在正规表示法当中,*则是【重复到无穷多个的前一个 RE字符】的意思~使用的意义并不相同。

sed 工具

sed 本身是一个管线命令,可以分析 standard input, 而且 sed 还可以将数据进行取代、删除、新增、撷取特定行等等的功能。

sed [-nefr] [动作]

在这里插入图片描述sed后面接的动作,请务必以' '两个单引号括住

除了整行的处理模式之外,sed还可以用行为单位进行部分数据的搜寻并取代的功能

sed 's/要被取代的字符串/新的字符串/g'

sed 后面学吧。。。

延伸正规表示法

在这里插入图片描述特别强调的是,! 在正规表示法当中并不是特殊字符,所以,如果想要查出来文件中含有!>的字行时,可以这样:

grep -n '[!>]' regular_express .txt

文件的格式化与相关处理

格式化打印:printf

printf 可以将资料输出的结果格式化,而且支持一些特殊的字符

printf '打印格式' 实际内容

在这里插入图片描述%8.2f 的意义:字符宽度为8,小数位有两位。

printf 除了可以格式化处理之外,还可以依据 ASCII 的数字与图形对应来显示数据。

awk:好用的数据处理工具

相较于 sed 常常作用于一整个行的处理,awk 则比较倾于一行当中分成数个【字段】来处理。因此,awk 相当的适合处理小型的数据数据处理。

awk '条件类型1{动作1} 条件类型2{动作2} ...' filename

awk 后面接两个单引号并加上大括号来设定想要对数据进行的处理动作。awk 可以处理后续接的文件,也可以读取来自前个指令的 standard output 。但 awk 主要是处理【每一行的字段内的数据】,而默认的【字段的分隔符为空格键或[tab]键】。

在这里插入图片描述
在 awk 的括号内,每一行的每个字段都是有变量名称的,那就是 $1,$2... 等变量名称。

整个 awk 的处理流程是:
1.读入第一行,并将第一行的资料填入$0,$1,$2…等变数当中;
2.依据"条件类型"的限制,判断是否需要进行后面的"动作";
3.做完所有的动作与条件类型;
4.若还有后续的【行】的数据,则重复上面1~3的步骤,直到所有的数据都读完为止。

awk 是【以行为一次处理的单位】,而【以字段为最小的处理单位】

awk 的内建变量
在这里插入图片描述
在这里插入图片描述

awk 的逻辑运算字符
在这里插入图片描述

awk 注意事项:
1.awk 的指令间隔:所有 awk 的动作,亦即在 {} 内的动作,如果有需要多个指令辅助时,可利用分号【;】间隔,或者直接以[Enter]按键来隔开每个指令;
2.逻辑运算当中,如果是【等于】的情况,则务必使用两个等号【==】;
3.格式化输出时,在 printf 的格式设定当中,务必加上 \n ,才能进行分行;
4.与 bash shell 的变量不同,在 awk 当中,变量可以直接使用,不需加上 $ 符号。

文件比对工具

什么时候会用到文件的比对啊?通常是【同一个软件包的不同版本之间,比较配置文件与原始档的差异】。很多时候所谓的文件比对,通常是用在 ASCII 纯文本档的比对上的。

diff
diff 就是用在比对两个文件之间的差异的,并且是以行为单位来比对的。一般是用在 ASCII 纯文本档的比对上。由于是以行为比对的单位,因此 diff 通常是用在同一的文件(或软件)的新旧版本差异上。

diff [-bBi] from-file to-file

在这里插入图片描述
cmp
cmp主要也是在比对两个文件,他主要利用【字节】单位去比对,因此,当然也可以比对 binary file( diff主要是以【行】为单位比对, cmp 则是以【字节】为单位去比对,这并不相同)

cmp [-l] file1 file2
# -l : 将所有的不同点的字节处都列出来,因为 cmp 预设仅会输出第一个发现的不同点

patch
旧的文件升级为新的文件:先比较先旧版本的差异,并将差异档制作成为补丁档,再由补丁档更新旧文件。
patch 指令可以将旧版数据更新到新版(主要亦由diff 建立patch 的补丁来源文件)

patch -pN < patch_file # 更新
patch -R -pN < patch_file # 还原
# -P:后面可以接【取消几层目录】的意思
# -R:代表还原,将新的文件还原成原来旧的版本

文件打印准备:pr,可以具有标题,可以加入页码。
标题中会有,【文档时间】、【文档档名】、【页码】
在这里插入图片描述
太多了,学不完。。。。

《鸟哥的Linux私房菜-基础篇》学习笔记

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

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

相关文章

【从入门到起飞】JavaSE—多线程(2)(lock锁,死锁,等待唤醒机制)

文章目录 &#x1f33a;lock锁⭐获得锁⭐释放锁✨注意&#x1f3f3;️‍&#x1f308;代码实现&#x1f388;细节 &#x1f33a;死锁⭐解决方法 &#x1f384;等待唤醒机制⭐代码实现&#x1f388;注意 &#x1f6f8;使用阻塞队列实现等待唤醒机制 &#x1f354;线程的六种状态…

AOP + 自定义注解实现日志打印

1. 先定义个注解&#xff0c;让它作用于方法上 Target({ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) public interface Loggable {}2. 定义切面 Aspect Component Slf4j public class LogMethodCallAspect {Pointcut("annotation(com.wy.spring_demo.aop.…

1panel在应用商店里面安装jenkins

文章目录 目录 文章目录 前言 一、使用步骤 1.1 填写安装参数 1.2 在界面中进入容器拿到自动生成的jenkins密码 前言 一、使用步骤 1.1 填写安装参数 在应用商店里面搜索jenkins,然后点击安装 填写参数 1.2 在界面中进入容器拿到自动生成的jenkins密码 命令 cat /var/jenki…

【数据结构与算法篇】一文详解数据结构之二叉树

树的介绍及二叉树的C实现 树的概念相关术语树的表示 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一 个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c; 也就是说它是根朝上&#xff0c;而叶朝…

上海站报名启动! 2023年开源产业生态大会OpenHarmony生态分论坛

作为年内开源领域不容错过的科技盛宴&#xff0c;2023年开源产业生态大会将于12月19日在上海盛大开幕。本次活动由上海市经济和信息化委员会、上海市科学技术协会和"科创中国"开源创新联合体共同指导&#xff0c;上海开源信息技术协会统筹主办。 届时&#xff0c;大会…

WEB渗透—反序列化(六)

Web渗透—反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩哔_…

黑马程序员索引学习笔记

文章目录 索引的分类从索引字段特性从物理存储从数据结构组成索引的字段个数 InnoDB主键索的Btree高度为多高呢?explain执行计划最左匹配原则索引失效情况SQL提示覆盖索引、回表查询前缀索引索引设计原则 索引的分类 从索引字段特性 主键索引、唯一索引、常规索引、全文索引…

2023 年最新百度智能云千帆大模型 Node.Js 本地测试 / 微信机器人详细教程(更新中)

千帆大模型概述 一站式企业级大模型平台&#xff0c;提供先进的生成式AI生产及应用全流程开发工具链。直接调用ERNIE-Bot 4.0及其他主流大模型&#xff0c;并提供可视化开发工具链&#xff0c;支持数据闭环管理、专属大模型定制、大模型训练调优、插件编排等功能。 千帆大模型…

RHCE---给openlab搭建web网站

作业&#xff1a;请给openlab搭建web网站 网站需求&#xff1a; 1.基于域名 www.openlab.com 可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c; 1、基于 www.openlab.com/student 网站访问学生信…

中国一年有457万人确诊癌症!医生提示:这4种食物,再爱吃也要管住嘴

癌症是威胁人类生命健康的重大疾病&#xff0c;癌症的发生因素一直以来都是专家学者重点探索的课题。据世卫组织最新公布的数据显示&#xff0c;食物或与癌症发生之间存在着密切的联系&#xff0c;某些食物的摄入过多可能会增加患癌症的风险&#xff0c;所以我们应该警惕&#…

LeetCode Hot100 124.二叉树中的最大路径和

题目&#xff1a; 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点…

佳易王个体诊所门诊电子处方软件试用版下载,佳易王电子处方软件的配方模板功能作用与教程

佳易王个体诊所门诊电子处方软件试用版下载&#xff0c;佳易王电子处方软件的配方模板功能作用与教程 1、软件试用版及教程可以点击下方的官网卡片 2、软件中有一个实用的功能&#xff0c;配方模板功能&#xff0c;在开处方单时候可以一键导入配方&#xff0c;节省时间。 而…

2024年天津天狮学院专升本市场营销专业《市场营销学》考试大纲

2024年天津天狮学院专升本市场营销专业高职升本入学考试《市场营销学》考试大纲 一、考试性质 《市场营销学》专业课程考试是天津天狮学院市场营销专业高职升本入学考试的必 考科目之一&#xff0c;其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《市…

2019年全国硕士研究生入学统一考试管理类专业学位联考英语(二)试题

文章目录 2019年考研英语二真题SectionⅠ Use of EnglishSection II Reading ComprehensionText 121——细节信息题22——细节信息题23——细节信息题24——细节信息题25——词义题 Text 226——细节信息题27——细节信息题28——细节信息题29——细节信息题30——态度题 Text …

6.3 Windows驱动开发:内核枚举IoTimer定时器

内核I/O定时器&#xff08;Kernel I/O Timer&#xff09;是Windows内核中的一个对象&#xff0c;它允许内核或驱动程序设置一个定时器&#xff0c;以便在指定的时间间隔内调用一个回调函数。通常&#xff0c;内核I/O定时器用于周期性地执行某个任务&#xff0c;例如检查驱动程序…

基于helm的方式在k8s集群中部署gitlab - 升级(三)

接上一篇 基于helm的方式在k8s集群中部署gitlab - 部署&#xff08;一&#xff09;&#xff0c;本篇重点对gitlab在k8s集群中进行升级 文章目录 1. gitlab 升级1.1 获取release1.2 下载目前版本的gitlab charts1.3 获取当前的values文件1.4 升级 2. gitlab数据库升级2.1 备份数…

【Linux】记录错误信息日志的实现

文章目录 前言一、 目录实现&#xff08;log.hpp&#xff09;二、目录的具体使用1.comm.hpp&#xff08;管道初始化&#xff09;2.sever.cpp&#xff08;为读端且令其创建命名管道&#xff09;3.client.cpp(为写端) 前言 我们这个设计的日志可以自定以输出的方向&#xff0c;可…

echart一键生成迁徙图

echart_move 介绍 echart迁徙图&#xff0c;选择起点和目的地生成迁徙图 软件架构 html echarts js 使用说明 将文件放到同一目录下打开index.html即可 默认是小飞机图标&#xff0c;如果想修改图标&#xff0c;将图片放到同一目录&#xff0c;如1.svg 代码修改为对应位…

windows本地dockr的clickhouse链接本地mysql服务,连接不上

不想看过成的&#xff0c;解决办法在最后面 报错信息&#xff1a; SQL 错误 [1000] [08000]: Poco::Exception. Code: 1000, e.code() 0, Exception: Connections to all replicas failed: test1localhost:3306 as user root (version 21.12.3.32 (official build)) , serve…

使用Selenium、Python和图鉴打码平台实现B站登录

selenium实战之模拟登录b站 基础知识铺垫&#xff1a; 利用selenium进行截图&#xff1a; driver.save_screenshot() 注意图片文件名要用png结尾. 关于移动&#xff1a; ActionChains(bro).move_to_element_with_offset()# 对于某个图像ActionChains(bro).move_by_offset(…