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

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

正规表示法基本上是一种【表示法】,只要工具程序支持这种表示法,那么该工具程序就可以用来作为正规表示法的字符串处理之用。例如 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.mzph.cn/news/177463.shtml

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

相关文章

Linux驱动开发笔记(五):驱动连接用户层与内核层的文件操作集原理和Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/134561660 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

TS版LangChain实战:基于文档的增强检索(RAG) | 京东云技术团队

LangChain LangChain是一个以 LLM &#xff08;大语言模型&#xff09;模型为核心的开发框架&#xff0c;LangChain的主要特性&#xff1a; 可以连接多种数据源&#xff0c;比如网页链接、本地PDF文件、向量数据库等允许语言模型与其环境交互封装了Model I/O&#xff08;输入…

UE4/UE5 雾

雾 UE4/UE5 雾平面雾材质效果图&#xff1a; 3D雾区材质效果图&#xff1a; UE4/UE5 雾 平面雾 做好将材质放在Plane上就行 材质 效果图&#xff1a; 3D雾区 做好将材质放在3D模型上就行 材质 效果图&#xff1a;

羊大师:蜂蜜加羊奶,养颜美容佳品

羊大师&#xff1a;蜂蜜加羊奶&#xff0c;养颜美容佳品 蜂蜜和羊奶是两种自然界中的宝贵养生食材&#xff0c;它们的结合不仅味道美味&#xff0c;还具有丰富的营养价值和一系列的保健功效&#xff0c;被誉为养颜美容的佳品。下面让小编羊大师带大家来详细了解一下蜂蜜加羊奶…

美团小游戏rpk包对接流程小记

美团小游戏rpk包对接流程小记 美团小游戏开发时&#xff0c;其实很简单&#xff0c;和各大厂差不多。 一、先贴个文档&#xff1a; 美团游戏开放平台文档地址&#xff1a; https://game.meituan.com/#/docs二、接入前准备&#xff1a; 与微信抖音小游戏的流程差不多&#xf…

解读 | 从谷歌AI判定阿波罗登月“造假“来谈谈合成图片检测技术

大家好&#xff0c;我是极智视界&#xff0c;欢迎关注我的公众号&#xff0c;获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」&#xff0c;星球内有超多好玩的项目实战源码和资源下载&#xff0c;链接&#xff1a;https://t.zsxq.com/0aiNxERDq 整个事情可以爬楼看…

Vue3的transition标签以及animate.css使用详解

一&#xff1a;前言 在项目开发中&#xff0c;有一种特殊情况是使用动画过渡去完成某个效果。比如淡入淡出&#xff0c;或者在动画完成后执行某些操作等。在以前开发中我们通常会选择使用 CSS3 进行研发。但是这样会有很多不好的地方&#xff0c;比如最原始化的封装&#xff0c…

Spring Security 6.x 系列(5)—— Servlet 认证体系结构介绍

一、前言 本章主要学习Spring Security中基于Servlet 的认证体系结构&#xff0c;为后续认证执行流程源码分析打好基础。 二、身份认证机制 Spring Security提供个多种认证方式登录系统&#xff0c;包括&#xff1a; Username and Password&#xff1a;使用用户名/密码 方式…

别做无用功!了解伦敦银交易指标的分类

在伦敦银投资中&#xff0c;我们都喜欢使用技术指标来帮助我们判断市场行情、预测银价点位。其实&#xff0c;伦敦银的技术指标是有不同分类的&#xff0c;我们了解主要的几类&#xff0c;这样在交易中才不至于将相同类型的叠加在一起&#xff0c;这样容易降低决策效率。 分类一…

最强学习辅助工具重磅上市:虚拟与现实互动结合助力学习更快一步

太让人震撼了&#xff01;&#xff01;当当狸这款AR智能学习图集打破了传统历史学习材料壁垒 将AR增强现实技术与诗词互动、历史人文、古典建筑巧妙融合 内容真实有趣&#xff0c;全面激发孩子们的学习探索兴趣 妈妈们都想入手的【教学辅助工具】 有了它&#xff0c;孩子学…

2.3基于springboot养老院管理系统

2.3基于springboot养老院管理系统 成品项目已经更新&#xff01;同学们可以打开链接查看&#xff01;需要定做的及时联系我&#xff01;专业团队定做&#xff01;全程包售后&#xff01; 2000套项目视频链接&#xff1a;https://pan.baidu.com/s/1N4L3zMQ9nNm8nvEVfIR2pg?pwd…

docker-compose Install OrangeHRM

OrangeHRM 前言 OrangeHRM 是一个全面的人力资源管理(HRM) 系统,它包含任何企业所需的所有基本功能。OrangeHRM旨在支持任何规模的团队,包括初创企业、中小企业以及大型跨国组织。 OrangeHRM 提前条件 OrangeHRMdocker & docker-composer 安装or

el-table,列表合并,根据名称列名称相同的品名讲其它列值相同的进行合并

el-table,列表合并,根据名称列名称相同的品名讲其它列值相同的进行合并,并且不能垮品名合并 如图 用到el-table合并行的方法合并 tableSpanMethod({ row, column, rowIndex, columnIndex }) {if (column.property "materielName") {//合并商品名const _row this…

Linux后台运行jar包

Linux后台运行jar包 方式一 命令如下&#xff1a; java -jar /data/tools/jar/demo.jar注&#xff1a;/data/tools/jar&#xff1a;指定jar包所在位置&#xff0c;否则要在jar包所在位置运行改命令&#xff1b;当前ssh窗口被锁定&#xff0c;可按CTRL C打断程序运行&#xf…

小功能实现(十八)生成kml文件

引入依赖 <!--解析、生成kml文件类--><dependency><groupId>de.micromata.jak</groupId><artifactId>JavaAPIforKml</artifactId><version>2.2.0</version></dependency>使用方法 注意&#xff1a;需要什么内容可自行添…

CCC联盟数字钥匙(一)——UWB MAC概述

本文在前面已经介绍了相关UWB的PHY之后&#xff0c;重点介绍数字钥匙&#xff08;Digital Key&#xff09;中关于MAC层的相关实现规范。由于MAC层相应涉及内容比较多&#xff0c;本文首先从介绍UWB MAC的整体框架&#xff0c;后续陆续介绍相关的网络、协议等内容。 1、UWB MAC架…

深入redis过程-命令

目录 通用命令 get set keys exists del expire key seconds ttl type 常用数据结构 String类型 SET GET MSET MGET INCR INCRBY INCRBYFLOAT SETNX SETEX Hash类型 HSET key field value HGET key field HMSET HMGET HGETALL HKEYS HVALS HINCRB…

定制开发办公软件在企业发展中的优势|app小程序网站搭建

定制开发办公软件在企业发展中的优势|app小程序网站搭建 如今&#xff0c;办公软件已经成为企业日常工作的必需品。很多企业为了提高工作效率和满足自身业务需要&#xff0c;选择定制开发办公软件。下面将介绍定制开发办公软件在企业发展中的优势。 首先&#xff0c;定制开发办…

Moonbeam生态项目分析 — — 聚合流动性管理协议GAMMA

流动性激励计划Moonbeam Ignite是帮助用户轻松愉快体验Moonbeam生态的趣味活动。在Moonbeam跨链连接的推动下&#xff0c;DeFi的各种可能性在这里爆发。DeFi或许不热门&#xff0c;但总有机会捡漏&#xff0c;了解Monbeam生态项目&#xff0c;我们邀请Moonbeam大使分享他们的研…

智能AIGC写作系统ChatGPT系统源码+Midjourney绘画+支持GPT-4-Turbo模型+支持GPT-4图片对话

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…