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私房菜-基础篇》学习笔记

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

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

相关文章

【运营思维】美团面试题:如何把梳子卖给寺庙和尚?

Hello 小米的小伙伴们~ 欢迎来到小米的微信公众号&#xff01;今天小米要和大家分享一道美团运营面试题&#xff0c;题目可真是独特——“如何把梳子卖给寺庙和尚&#xff1f;”想必大家一定兴奋不已吧&#xff01; 首先&#xff0c;让我们理清思路&#xff0c;挑战这个看似不…

[学习笔记]IK分词器的学习

IK分词器有几种模式 # 测试分词器 POST /_analyze {"text":"黑马程序员学习java太棒了","analyzer": "standard" }# 测试分词器 POST /_analyze {"text":"黑马程序员学习java太棒了","analyzer": &quo…

最新AI创作系统ChatGPT系统运营源码+DALL-E3文生图+支持OpenAI-GPT全模型+国内AI全模型

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

1评论收藏分享抖店不要再无脑铺货了!这个方法学会,7天流量就起飞~

这2023年都马上过完了&#xff0c;你还在上一堆链接到抖店吗&#xff1f;要知道这样无脑铺货是拿不到大流量的。 哪今天我给大家分享一个&#xff0c;比较适合新手操作&#xff0c;也能快速起流量出单的方法。 。首先你的店铺拿不到流量&#xff0c;一定要先查清楚你为什么拿…

海外Leads Generation产业:中国出海群体的行业大机会

Leads Generation&#xff08;简称LeadsGen&#xff09;指的是集中精力吸引和开发潜在客户的营销策略。通过引导式的营销策略&#xff0c;企业分发内容吸引潜在客户&#xff0c;引导客户留下电话/邮件/姓名等信息。基于这些信息&#xff0c;企业可建立潜在客户数据库&#xff0…

P8A002-CIA安全模型-配置Linux描述网络安全CIA模型之可用性案例

【预备知识】 可用性(Availability) 数据可用性是一种以使用者为中心的设计概念,易用性设计的重点在于让产品的设计能够符合使用者的习惯与需求。以互联网网站的设计为例,希望让使用者在浏览的过程中不会产生压力或感到挫折,并能让使用者在使用网站功能时,能用最少的努力…

数据结构与算法编程题27

计算二叉树深度 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode* lchild, * rchild; }BiTNo…

基于单片机的智能鱼缸(论文+源码)

1.总体设计 在本次设计中&#xff0c;其系统整个框图如下图2.1所示。其主要的核心控制模块由单片机模块&#xff0c;LCD显示模块&#xff0c;喂食模块&#xff0c;蜂鸣器模块&#xff0c;按键模块&#xff0c;复位电路&#xff0c;抽水电路&#xff0c;加热电路&#xff0c;加…

麒麟V10服务器搭建FTP服务

概念 1.1介绍 FTP&#xff1a;File transfer protocol 文件传输协议 1.2原理 默认采用被动模式 被动模式FTP 为了解决服务器发起到客户的连接的问题&#xff0c;人们开发了一种不同的FTP连接方式。这就是所谓的被 动方式&#xff0c;或者叫做PASV&#xff0c;当客户端通…

C#开发的OpenRA游戏之属性SelectionDecorations(10)

C#开发的OpenRA游戏之属性SelectionDecorations(10) 前面分析了选择属性,继续分析前面的内容,不过这里不再是选择,而是选择相关的属性。 当用玩家选择地图上一个物品,或者士兵,或者坦克时,就会在周边画上一些指示标记,并且有一个状态条。 通过上图,可以看到建筑物周…

Eureka简单使用做微服务模块之间动态请求

创建一个eureka模块,引入eureka 为启动项加上EnableEurekaServer注解 配置信息 orderService和userService的操作是一样的 这里以orderService为例: 引入eureka客户端 加上 LoadBalanced注解 配置 orderService和userService都配置好了之后 启动 这样我们在http://localhos…

k8s环境排查nginx转发nacos请求失败问题

一、问题背景 k8s部署两个服务,一个nginx&#xff0c;一个nacos, 服务信息如下(nacos有两个端口): 服务 serviceNameservice类型porttargetPort nodePortnginxmonitor-cp-nginxNodePort808031082nacosmonitor-cp-nacosClusterIP88488848-98489848- ng的default.conf配置文件…

新购服务器项目部署指南—— Express + Vue + Nginx+ pm2 Nodejs项目部署全流程

目录 一、部署Express项目1.1、安装Node1.2、安装pm2进程管理器1.3、部署Express后端项目 二、部署Vue前端项目2.1、Nginx的下载安装与SLL配置2.2、打包Vue项目2.3、上传项目到Nginx目录2.4、配置Nginx 附录pm2命令速览Nginx命令速览 最后 书接上回&#xff1a;新购服务器开荒记…

队列实现方式、效率分析及应用场景

文章目录 一、什么是队列二、队列特性阻塞和非阻塞有界和无界单向链表和双向链表 三、Java队列接口继承图四、Java队列常用方法五、队列实现方式与效率分析六、队列的应用场景七、Python中队列与优先级队列使用 一、什么是队列 队列是一种特殊的线性表&#xff0c;遵循先入先出…

CloudCompare 源码编译

一、下载源码 二、cmake 编译 这里面有四个比较重要的地方 1、源码的位置 2、生成的位置 3、项目的位置 4、qt 的位置 三、编译 开始测试&#xff0c;先用那个项目做测试 没有问题 然后用build的那个打开 加入Qt 的相关库到qcc中 启动项目生成cloudcompare 启动 ok ,完成…

Unsupervised Skill Discovery via Recurrent Skill Training论文笔记

Zheyuan Jiang, Jingyue Gao, Jianyu Chen (2022). Unsupervised Skill Discovery via Recurrent Skill Training. In Conference on Neural Information Processing Systems (NeurIPS), 2022. 通过循环技能训练发现无监督技能 1、Motivation 以往的无监督技能发现方法主要使…

Pinctrl子系统和GPIO子系统实验

驱动入口出口函数&#xff1a; static int __init led_init(void) {return 0; } static void __exit led_exit(void) { }module_init(led_init);module_exit(led_exit);MODULE_LICENSE("GPL");字符设备驱动那一套 先创建设备结构体 &#xff08;cdev&#xff09; 1…

Unity 自带的一些可以操控时间的属性或方法。

今天来总结下Unity自带的一些可以操控时间的方法。 1、Time.time。比较常用计算运行时间而触发特定事件。 public class Controller : MonoBehaviour {public float eventTime 5f; // 触发事件的时间private float startTime; // 游戏开始的时间private void Start(){startT…

【Cisco Packet Tracer】电子邮箱仿真搭建

本文使用Cisco Packet Tracer&#xff0c;搭建电子邮箱仿真系统&#xff0c;使得zhangsancisco.com可以和lisicisco.com可以互相发送邮件。 电子邮箱账号&#xff08;为了简单起见&#xff0c;账号密码设置一致&#xff09;&#xff1a;zhangsan/lisi 域名&#xff1a;cisco.…

京东运营数据分析(京东数据采集):2023年10月京东护肤行业品牌销售排行榜

鲸参谋监测的京东平台10月份护肤市场销售数据已出炉&#xff01; 鲸参谋数据显示&#xff0c;2023年10月份&#xff0c;京东平台上护肤市场的销量为2000万&#xff0c;环比增长约28%&#xff0c;同比降低约26%&#xff1b;销售额为25亿&#xff0c;环比增长约24%&#xff0c;同…