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,一经查实,立即删除!

相关文章

content_script.js、background.js和popup.js之间的通讯

1. content_script.js 和 background.js 之间的通信&#xff1a; 使用 chrome.runtime.sendMessage 发送消息&#xff0c;然后在 background.js 中使用 chrome.runtime.onMessage 监听消息并作出相应处理。使用 chrome.extension.sendMessage 发送消息&#xff0c;然后在 back…

【小白推荐】安装OpenCV4.8 系统 Ubuntu 22.04LST Linux.

先看一下目录&#xff0c;知道大致的流程&#xff01; 文章目录 安装OpenCV安装依赖下载源码配置与构建安装 测试编写CMakeListx.txt编写测试代码 安装OpenCV 安装依赖 sudo apt update && sudo apt upgrade sudo apt install cmake ninja-build build-essential lib…

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;

如何在langchain中对大模型的输出进行格式化

简介 我们知道在大语言模型中, 不管模型的能力有多强大&#xff0c;他的输入和输出基本上都是文本格式的&#xff0c;文本格式的输入输出虽然对人来说非常的友好&#xff0c;但是如果我们想要进行一些结构化处理的话还是会有一点点的不方便。 不用担心&#xff0c;langchain已…

pandas教程:Introduction to scikit-learn scikit-learn简介

文章目录 13.4 Introduction to scikit-learn&#xff08;scikit-learn简介&#xff09; 13.4 Introduction to scikit-learn&#xff08;scikit-learn简介&#xff09; scikit-learn是一个被广泛使用的python机器学习工具包。里面包含了很多监督式学习和非监督式学习的模型&a…

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

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

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

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

Mysql深入——5

SQL语句为什么有时候会执行的很慢 这种情况是随机的&#xff0c;有时候突然你执行一条语句就会变慢&#xff0c;这是为什么呢&#xff1f; 从以前的内容可以得知&#xff0c;InnoDB在执行更新语句的时候&#xff0c;有一个redo log&#xff0c;更新内存写完redo log之后就返回…

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

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

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

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

VMware系列:此平台不支持虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI

此平台不支持虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI 一. 此平台不支持虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI1.首先了解此选项有什么作用:(开启虚拟化 虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI )操作1.从系统层面设置入手:操作2.从电脑软件冲突层面解决问题:然后关闭Hyper-V的相关设…

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

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

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

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

Docker compose启动服务遇到的问题

这是学长留的一个任务&#xff0c;用docker compose启动三个服务&#xff0c;分别是minio、elasticsearch、nginx。 话不多说&#xff0c;让我们看看有哪些错误。 一、数据卷挂载权限问题 这是原始docker-compose.yaml文件 version: "3.8"networks:my-net:name: g…

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

太让人震撼了&#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…