linux的三剑客

1、grep命令
grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。它是Linux系统中一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

shell脚本中也经常使用grep,因为grep通过返回一个状态值来说明搜索的结果。如果搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

grep家族包括grep、egrep和fgrep。egrep和fgrep的命令跟grep区别不大。egrep是grep的扩展,支持更多的re元字符,fgrep是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示其自身的字面意义。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

格式:grep [option] pattern file

参数

-a 不要忽略二进制数据。

-A <显示行数> 除了显示符合范本样式的行之外,并显示该行之后的指定几行内容。
-B<显示行数> 除了显示符合范本样式的行之外,并显示该行之前的指定几行内容。
-C<显示行数> 除了显示符合范本样式的那一行之外,并显示该行前后指定几行的内容。
-b 在显示符合范本样式的那一行之外,并显示字节偏移量。-c 只计算显示符合范本样式的行数,不显示详细内容
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着能使用扩展正则表达式。
-f <范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同,表明查找路径为目录
-s 不显示错误信息。
-v 反转查找,显示不符合模式的所有信息
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。
–color=auto 把匹配部分标记出来,要想当前终端后续使用都要标记匹配部分,可用alias命令重新封装grep。
示例:
0.png

正则表达式
正则表达式应用广泛,在绝大多数的编程语言都可以应用,在Linux中,也有着很大的用处。使用正则表达式,可以有效的筛选出需要的文本,然后结合相应的支持的工具或语言,完成我们的需求。

格式

.匹配任意单个字符,不能匹配空行
[] 匹配指定范围内的任意单个字符
[^] 取反
[:alnum:] 或 [0-9a-zA-Z]
[:alpha:] 或 [a-zA-Z]
[:upper:] 或 [A-Z]
[:lower:] 或 [a-z]
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
[:digit:] 十进制数字 或[0-9]
[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号

  • 匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配

.* 任意长度的任意字符,不包括0次
? 匹配其前面的字符0 或 1次

  • 匹配其前面的字符至少1次
    {n} 匹配前面的字符n次
    {m,n} 匹配前面的字符至少m 次,至多n次
    {,n} 匹配前面的字符至多n次
    {n,} 匹配前面的字符至少n次
    我们可以根据grep命令任意组合正则表达式

2、sed命令
主要用来自动编辑一个或多个文件, 简化对文件的反复操作

sed是一种流编辑器,一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容输出。然后读入下行,执行下一个循环。如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出或-i。

格式:sed [options] ‘command’ file(s)
常用参数:

-n:不输出内容到屏幕,即不自动打印,只打印匹配到的行
-e:多点编辑,对每行处理时,可以有多个Script
-f:把Script写到文件当中,在执行sed时-f指定文件路径,如果是多个Script,换行写
-r:支持扩展的正则表达式
-i:直接将处理的结果写入文件
-i.bak:在将处理的结果写入文件之前备份一份
示例:

sed ‘=’ test.txt #显示行号
sed ‘3=’ test.txt #显示第三行行号
sed “/./=” test.txt #只显示非空白行的行号
sed -n “/./!=” test.txt #只显示空白行行号
sed ‘$=’ test.txt #显示总共有多少行
sed -n ‘2p’ test.txt #要加-n,否则会默认自动打印所有内容
sed -n ‘2 p’ test.txt #要加-n,否则会默认自动打印所有内容

输出指定行

sed -n ‘2,7 p’ test.txt
sed -n ‘2,7p’ test.txt
sed -n ‘2,7 {p}’ test.txt

#替换文件中内容
sed -i ‘s/bck/sh/’ test.txt test1.txt #替换test.txt、test1.txt内的bck为sh,每行只替换一个
sed -i ‘s/bck/sh/g’ test.txt #替换test.txt内的bck为sh,每行都进行全面替换
sed -i ‘s/bck/sh/3g’ test.txt #替换test.txt内的bck为sh,从第3个匹配位置开始替换
sed -i ‘s@bck@sh@g’ test.txt #替换test.txt内的bck为sh,每行都进行全面替换
sed -i ‘s#bck#sh#g’ test.txt #替换test.txt内的bck为sh,每行都进行全面替换

#显示查找内容的行
sed -n ‘/sh/p’ test.txt #显示test.txt内的所有包含sh的所有行
sed -n ‘/sh/ ,$ p’ test.txt #显示test.txt里第一条包含sh的行及以下到末尾的所有行

3、awk命令
awk用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。awk其实不仅仅是工具软件,还是一种编程语言。

格式:
awk [options] ‘program’ var=value file…
awk [options] -f programfile var=value file…
awk [options] ‘BEGIN{ action;… } pattern{ action;… } END{ action;… }’ file …

常用命令选项

-F fs:fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
-v var=value:赋值一个用户定义变量,将外部变量传递给awk
-f scripfile:从脚本文件中读取awk命令
示例:

awk -v FS=‘:’ ‘{print $1,$2}’ testawk #FS指定输入分隔符
awk -v FS=‘:’ -v OFS=‘—’ ‘{print $1,$2}’ testawk #OFS指定输出分隔符
awk -v RS=‘:’ ‘{print $1,$2}’ testawk
awk -v FS=‘:’ -v ORS=‘—’ ‘{print $1,$2}’ testawk
awk -F: ‘{print NF}’ testawk
awk -F: ‘{print $(NF-1)}’ testawk #显示倒数第2列

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

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

相关文章

01 MIT线性代数-方程组的几何解释

一, 线性方程的几何图像 The geometry of linear equations 线性代数的基本问题就是解n元一次方程组 eg&#xff1a;二元一次方程组 矩阵形式: 系数矩阵(coefficient matrix): 未知数向量: 线性方程组简记为Axb 二, 行图像 Row Picture 行图像遵从解析几何的描述&#xff0…

离散小波变换(概念与应用)

目录 概念光伏功率预测中,如何用离散小波变换提取高频特征概念 为您简单地绘制一些示意图来描述离散小波变换的基本概念。但请注意,这只是一个简化的示意图,可能不能完全捕捉到所有的细节和特性。 首先,我将为您绘制一个简单的小波函数和尺度函数的图像。然后,我会提供一…

放弃webstrom转战vscode

本来是webstrom的忠实用户&#xff0c;无奈webstrom要么需要在网上找一个破解版或者不断的去找激活码&#xff0c;且破解版和激活码的文章总是很多&#xff0c;但是要找到真正有效的却总是要花费不少功夫。终于忍无可忍&#xff0c;转战vscode。&#xff08;注&#xff1a;文中…

2023.9 - MYSQL - 基础命令

DATABASE 1、创建数据库 - - create database 【mydatabase】&#xff1b; 2、删除数据库 - - drop database 【mydatabase】&#xff1b; 3、切换数据库 - - use 【mydatabase】&#xff1b; -------------------------------------------------…

SpringBoot全局异常处理源码

SpringBoot全局异常处理源码 一、SpringMVC执行流程二、SpringBoot源码跟踪三、自定义优雅的全局异常处理脚手架starter自定义异常国际化引入封装基础异常封装基础异常扫描器&#xff0c;并注册到ExceptionHandler中项目分享以及改进点 一、SpringMVC执行流程 今天这里叙述的全…

linux 下 top命令显示的是内存是堆内存吗?

top 命令在 Linux 下提供了关于系统运行状态的实时视图&#xff0c;其中包括进程信息、CPU 使用率、内存使用情况等。关于内存&#xff0c;top 命令显示的并不是“堆内存”&#xff0c;而是整个系统的内存使用情况。 在 top 命令的输出中&#xff0c;你会看到类似以下的内存统…

华为OD机考算法题:分积木

目录 题目部分 解读与分析 代码实现 题目部分 题目分积木难度难题目说明Solo和koko是两兄弟&#xff0c;妈妈给了他们一大堆积木&#xff0c;每块积木上都有自己的重量。现在他们想要将这些积木分成两堆。哥哥Solo负责分配&#xff0c;弟弟koko要求两个人获得的积木总重量“…

Android 11.0 增加多张图片作为系统静态壁纸的功能实现

1.前言 在11.0的系统开发中,在做系统定制化开发中,在对系统的静态壁纸做定制的时候,需要增加几种静态壁纸可以让用户自己设置壁纸,所以可以在壁纸的系统应用中 添加几种静态壁纸图片,然后配置好 就可以在选择壁纸的时候,作为静态壁纸,接下来看如何具体实现这个功能 2.增…

ROS2 从头开始:第 08/8回 - 使用 ROS2 生命周期节点简化机器人软件组件管理

一、说明 欢迎来到我在 ROS2 上的系列的第八部分。对于那些可能不熟悉该系列的人,我已经涵盖了一系列主题,包括 ROS2 简介、如何创建发布者和订阅者、自定义消息和服务创建、

LLM - Make Causal Mask 构造因果关系掩码

目录 一.引言 二.make_causal_mask 1.完整代码 2.Torch.full 3.torch.view 4.torch.masked_fill_ 5.past_key_values_length 6.Test Main 三.总结 一.引言 Causal Mask 主要用于限定模型的可视范围&#xff0c;防止模型看到未来的数据。在具体应用中&#xff0c;Caus…

Unity之Hololens开发如何实现UI交互

一.前言 什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信…

内存对齐--面试常问问题和笔试常考问题

1.内存对齐的意义 C 内存对齐的主要意义可以简练概括为以下几点&#xff1a; 提高访问效率&#xff1a;内存对齐可以使数据在内存中以更加紧凑的方式存储&#xff0c;从而提高了数据的访问效率。处理器通常能够更快地访问内存中对齐的数据&#xff0c;而不需要额外的字节偏移计…

libevent学习——辅助类型和函数

辅助类型和函数 文章目录 基本类型evutil_socket_t标准整数类型各种兼容性类型 定时器可移植函数套接字 API 兼容性可移植的字符串操作函数区域无关的字符串操作函数IPv6辅助和兼容性函数结构体可移植性函数安全随机数发生器 <event2/util.h>定义了很多在实现可移植应用…

Learn Prompt- Midjourney 图片生成:Image Prompts

Prompt 自动生成 前不久&#xff0c;Midjourney 宣布支持图片转 prompt 功能。 原始图片​ blueprint holographic design of futuristic Midlibrary --v 5Prompt 生成​ 直接输入 /describe 指令通过弹出窗口上传图像并发送&#xff0c;Midjourney 会根据该图像生成四种可…

完成“重大项目”引进签约,美创科技正式落户中国(南京)软件谷

近日&#xff0c;美创科技正式入驻中国&#xff08;南京&#xff09;软件谷&#xff0c;并受邀出席中国南京“金洽会"之“雨花台区数字经济创新发展大会”。美创科技副总裁罗亮亮作为代表&#xff0c;在活动现场完成“重大项目”引进签约。 作为国家重要的软件产业与信息服…

关于ubuntu设置sh文件开机自启动python3和sudo python3问题

关于ubuntu设置sh文件开机自启动python3和sudo python3问题 说明系统为 ubuntu22.04python是python3.10.12ros系统为ros2 humble 背景解决方法补充 说明 系统为 ubuntu22.04 python是python3.10.12 ros系统为ros2 humble 背景 将一个py文件设置为开机自启动&#xff0c;服…

css-边框原理教程

1. CSS中边框原理 他不是一条直线&#xff0c;根据盒子原理&#xff0c;当边框宽度大于元素的长和宽时&#xff0c;呈现一个梯形和三角形的形状&#xff0c;用如下的代码来实地理解一下边框画法实现的原理 注&#xff1a;学习网址&#xff1a; CSS画几种图形的方法_css画图_老…

贪心算法总结归类(图文解析)

贪心算法实际上并没有什么套路可言&#xff0c;贪心的关键就在于它的思想&#xff1a; 如何求出局部最优解&#xff0c;通过局部最优解从而推导出全局最优解 常见的贪心算法题目 455. 分发饼干 这题的解法很符合“贪心”二字 如果使用暴力的解法&#xff0c;那么本题是通过…

Windows--Python永久换下载源

1.新建pip文件夹&#xff0c;注意路径 2.在上述文件中&#xff0c;新建文件pip.ini 3.pip.ini记事本打开&#xff0c;输入内容&#xff0c;保存完事。 [global] index-url https://pypi.douban.com/simple

【记录文】Android自定义Dialog实现圆角对话框

圆角的dialog还是蛮常用的&#xff0c;demo中正好用上了 自定义Dialog&#xff0c;代码中可以设置指定大小与位置 /*** author : jiangxue* date : 2023/9/25 13:21* description :圆角的矩形*/internal class RoundCornerView(context: Context,view: Int, StyleRes theme…