linux_三剑客(grep,sed,awk)

news2024/10/5 20:28:26

前言:

Bash:是一个命令处理器,运行在文本窗口中,并能执行用户直接输入的命令。

Bash还能从文件中读取Linux命令,称之为脚本。

Bash支持通配符,管道,命令替换,条件判断等逻辑控制语句。

快捷命令:

history--历史命令

ctrl + a 移动到行首
ctrl + e 移动到行尾

ctrl +u 删除光标之前的字符

ctrl + k 删除光标之后的字符

ctrl + L 清空屏幕终内容,同于clear

Linux三剑客简介

文本处理工具,均支持正则表达式引擎
grep:文本过滤工具,(模式: pattern) 工具

sed: stream editor,流编辑器;文本编辑工具

awk: Linux的文本报告生成器 (格式化文本),Linux上是gawk

Linux 三剑客主要分两类:

基本正则表达式 BRE :

扩展正则表达式:ERE:

基本正则表达式

扩展正则表达式

linux--grep:

作用 文本搜索工具,根据用户指定的模式(过滤条件)对目标文本逐行进行匹配检查,打印匹配到的行。

模式:由正则表达式的元字符及文本字符所编写出的过滤条件。

以下是测试用例:

cat /etc/passwd > ./pwd.txt  打开文件放到当前目录下的文件中,没有则生成。

:set nu  显示行号

Grep  ‘root’ a.txt  查找  文件中查找root

Grep ‘root’ a.txt -n  显示行号

Grep ‘root’ a.txt -n -I  忽略大小写

grep -i 'root' ./pwd.txt -n -c 带有root的有多少行。

grep '^$' luffy.txt -n 找到所用空行并显示行号

grep '^$' luffy.txt -n -v 反转,不要空行

grep '^#' luffy.txt -v | grep '^$'  -n -v  取出没有注释的行,没有空行的行

grep -i '^i' luffy.txt -n 找出所有以i开头的行,忽略大小写了

grep '\.$' luffy.txt  找出所有的以点结尾的行

grep -n '/bin/bash$' pwd.txt  找出所有以  结尾的行

grep '.' luffy.txt  找出所有的非空行

grep 'i*'  luffy.txt   没有i的也会匹配出来,因为是0次

grep 'i*'  luffy.txt  -o  找到每行含有i的次数 o是只显示要匹配的字符

grep 'i*'  luffy.txt  全字符串匹配

grep '.*e' luffy.txt  贪婪匹配不管前面有什么,以e结尾就好了,

grep '[a-z]' luffy.txt 找出所有的小写英文字母

grep '[a-z0-9]' luffy.txt 找出所以的小写加数字

正则表达式扩展

egrep等价于 grep  -E

   +号表示匹配一个字符1次或者多次,必须使用grep -E 扩展正则

grep 'i+' luffy.txt  -E  匹配所有带i的行,没有的不显示,和上面不一样

? 符 匹配前一个字符0次或者一次

grep 'go?d' test1.txt -E  找出gd 或者god

|  符号:

find /root -name '*.txt'  找出所有这个文件夹下面的txt结尾的文件

find /root -name '*.txt' | grep -E 'b|c' 再次过滤只要b或者c的

{} 将一个或者多个字符捆绑在一起,当作一个整体进行处理

grep -E 'g(oo|la)d' test1.txt  找出good或者glad

grep -E ‘(l..e).*\1’ a.txt  找出两个love或者like的,前后要一致

grep -E ‘y{2,4}’  a.txt  -o 匹配y字符最少两次,最多4次

linux--sed

对文件或者数据流进行加工处理。是操作过滤和转换文本内容的强大工具。

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

  功能:主要用来自动编辑一个或多个文件, 简化对文件的反复操作

sed '2,3p' luffycity.txt 打印23行,这样会全部输出

sed  -n '2,3p' luffycity.txt 打印23行,

sed '2,+3p' luffycity.txt

sed '2,+3p' luffycity.txt -n  第二行,和下面的三行打印

sed '/linux/p' luffycity.txt  找出带有linux命令的行,这里会全部打印

sed '/linux/p' luffycity.txt -n  找出带有linux命令的行

sed '/game/d' luffycity.txt -n  删除带有game的行  这样是在内存中删除,文件没有删除。

sed '/game/d' luffycity.txt -I  在文件中删除

sed '5,$d' luffycity.txt -I  删除五行和之后的数据

sed 's/My/I/g' luffycity.txt  把my换成I  全部替换,这里只是在内存中更改,并不会写入到磁盘。

sed 's/My/I/g' luffycity.txt -I  替换

sed -e 's/I/My/g' -e 's/324324/100/g' luffycity.txt  -I  替换两次文本内容

sed '2a woshinibabab' luffycity.txt -I  在第二行后面加一句话

sed '2i woshinibabab' luffycity.txt -I  在第二行前面加一句话

 sed '2a woshinibabab.\nreerer' luffycity.txt -I  在第二行后面加2句话 ,注意没有空格

sed 'a --------' luffycity.txt  -I  在每一行下面加上--------

ifconfig ens33 | sed '2p' -n | sed 's/^.*inet//' | sed 's/net.*$//'  只取出IP地址

# ifconfig ens33 | sed -e '2s/^.*inet//' -e '2s/net.*$//p' -n   只取出IP地址

,这里用的是替换

Linux--Awk

更适合编辑,处理匹配到的文本内容。是一个强大的Linux命令,有强大的文本格式华的能力,好比将一些文本数据格式化成专业的excel表的样式。更是一门编程语言,支持条件判断,数组,循环等功能。

awk '{print $0}' chaoge.txt  取出所有的列

awk '{print $1}' chaoge.txt  取出第一列

我们执行的命令是 awk ‘{print $2}’ 没有是使用参数,$2表示输出文本的第二列信息,

Awk默认以空格为分隔符,且多个空格也识别为一个空格,作为分隔符。

Awk是按行处理文件,一行处理完毕,处理下一行,根据用户指定的分隔符去工作,没有指定就是默认空格,制定了分隔符后,awk把每一行切割后的数据对应到内置变量。

awk '{print $1,$3,$4}' chaoge.txt  打印三列,逗号代表空格,不加就连在一起了。

awk '{print "第一列:  "  $1,$2}' chaoge.txt   前面加个标识,一定要用引号括起来

awk 'NR==5{print $0}' chaoge.txt  找到第几行

awk 'NR==1,NR==2{print $0}' chaoge.txt  找到两行,行数不能变

awk '{print NR, $0}' chaoge.txt  NR  必须大写,带行号显示

awk '{print $1,$(NF-1)}' chaoge.txt  打印第一列和倒数第二列

awk '{print $1,NF}' chaoge.txt   打印第一列和列数

awk 'NR==2,NR==4{print $1}' a.txt  第1列的2-4行

ifconfig ens33 | awk 'NR==2{print $2}' 取出IP地址

输入分隔符:

awk -F ':' '{print $1}' pwd.txt  把该文件按照:分割开来取第一列

awk -F ':' '{print $1,$NF}' pwd.txt  取出第一列和最后一列

输出分隔符:

awk -F ':' '{print $1,$NF}' pwd.txt  取出第一列和最后一列,这里的逗号默认转换为空格

awk -F ':' -v OFS='====' '{print $1,$NF}' pwd.txt  按照:分隔开,输出之间用====

awk '{print NR,$0}' a.txt luffy.txt  当成一个文件输出  且显示行号

awk '{print FNR,$0}' a.txt luffy.txt  当成两个文件输出且显示行号

awk -v RS=' ' '{print NR,$0}' a.txt  以空格为换行符来打印

awk -v ORS='------ ' '{print NR,$0}' a.txt  每行后面输出的时候加上-----

awk  '{print FILENAME,$0}' a.txt  带文件名打印输出

awk 'BEGIN{print "aaaa"} {print $0}' a.txt  打印之前先输出aaaa

awk 'BEGIN{print "aaaa"} {print ARGV[1],$0}' a.txt  括号里面0代表awk命令,1代表文件名

awk -v myname='aaa' 'BEGIN{print "wode mingizshi ",myname}' 自定义变量,然后输出

awk ‘{print $0}’ a.txt 等价于下面:

awk ‘{printf “%s\n”,$0}” a.txt

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

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

相关文章

使用gpio子系统实现按键驱动(二)

一,gpio_keys.c介绍 Linux内核下的drivers/input/keyboard/gpio_keys.c实现了一个体系无关的GPIO按键驱动,使用此按键驱动,只需要在设备树gpio-key节点添加需要的按键子节点即可,适合于实现独立式按键驱动。 gpio-keys是基于inp…

gma 2 教程(三)坐标参考系统:1.坐标系和坐标参考系统模块简介

安装 gma:pip install gma 坐标参考系统是地理空间数据表示和位置定位的基础,它是一种用于描述和测量地球表面位置的标准化框架。其定义了坐标系统、基准面和坐标单位等要素,以确保地球上不同地方的位置可以一致、准确地表示和比较。 本章以g…

开源协议介绍

文章目录 一、简介二、常见开源协议介绍2.1 BSD (Berkeley Software Distribution license)2.2 MIT(Massachusetts Institute of Technology)2.3 Apache Licence 2.02.4 GPL(General Public License)2.5 LG…

微电网单台并网逆变器PQ控制matlab仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 微电网运行在并网模式下且公共电网供应正常时,因为公共电网给定了电 压和频率的参考值,所有的逆变器可以使用PQ控制方式。 当系统频率为额定频率f0时,系统稳定在A点&#x…

【C语言进阶(13)】文件操作

文章目录 Ⅰ 什么是文件1. 文件分类2. 文件名 Ⅱ 文本文件和二进制文件Ⅲ 文件缓冲区Ⅳ 文件的打开和关闭1. 文件指针2. 文件的打开和关闭3. 文件打开方式 Ⅴ 文件的顺序读写1. fputc 写入一个字符2. fgetc 读取一个字符3. fputs 覆盖并写入一行数据4. fgets 读取指定长度的数据…

CTR特征建模:ContextNet MaskNet(Twitter在用的排序模型)

在之前的文章中 FiBiNet&FiBiNet模型,阐述了微博在CTR特征(Embedding)重要性建模方面的一些实践方向,今天再来学习下这个方面的两个相关研究:致力于特征和特征交互精炼(refine)的ContextNet和MaskNet,其中MaskNet也是Twitter(…

STM32 PA15/JTDI 用作普通IO,烧录口不能使用问题解决

我们一般用SW调试接口 所以DEBUG选择Serial Wire 这样PA15可以用作普通IO使用。 工程中默认加上: PA13(JTMS/SWDIO).ModeSerial_Wire PA13(JTMS/SWDIO).SignalDEBUG_JTMS-SWDIO PA14(JTCK/SWCLK).ModeSerial_Wire PA14(JTCK/SWCLK).SignalDEBUG_JTCK-SWCLK

Apple 推出全球开发者资源 —— 人人能编程

近日,Apple 宣布推出 Meet with Apple Experts 开发者资源,帮助全球 Apple 开发者社区发现并参与课程、研讨会、实验室、一对一咨询等体验。 Meet with Apple Experts 初期提供超过 50 个课程、研讨会和咨询项目,并将持续提供线上和线下活动&…

深入理解强化学习——强化学习的例子

分类目录:《深入理解强化学习》总目录 为什么我们关注强化学习,其中非常重要的一个原因就是强化学习得到的模型可以有超人类的表现。 有监督学习获取的监督数据,其实是人来标注的,比如ImageNet的图片的标签都是人类标注的。因此我…

JavaScript入门——(6)对象

1、什么是对象 对象(object):JavaScript里的一种数据类型 可以理解为是一种无序的数据集合,注意数组是有序的数据集合 用来详细的描述某个事物,例如描述一个人 人有姓名、年龄、性别等信息、还有 吃饭睡觉打代码等…

Tomcat项目启动报错

java.io.IOException: java.lang.ClassCastException: Cannot cast org.springframework.web.SpringServletContainerInitializer to javax.servlet.ServletContainerInitializer解决办法:可能Tomcat版本不对,使用7.0.90版本启动报错,使用8.0…

关于hive的时间戳

unix_timestamp()和 from_unixtime()的2个都是格林威治时间 北京时间 格林威治时间8 from_unixtme 是可以进行自动时区转换的 (4.0新特性) 4.0之前可以通过from_utc_timestamp进行查询 如果时间戳为小数,是秒&#…

Python接口自动化搭建过程,含request请求封装!

开篇碎碎念 接口测试自动化好处 显而易见的好处就是解放双手😀。 可以在短时间内自动执行大量的测试用例通过参数化和数据驱动的方式进行测试数据的变化,提高测试覆盖范围快速反馈测试执行结果和报告支持持续集成和持续交付的流程 使用Requestspytes…

移动 联通 电信 运营商大数据是如何采集访客信息的?什么是截流?

今天我们来谈手机采集获取流量,离开了持续不断的客户流量进来,再历害的转化手法也白搭。网络项目做生意,PC时代流量加转化,互联时代也一样不变。手机采集引流要么上量不精准,要么就是精准不上量的,我们不必…

AlmaLinux (兼容centos)安装Geant4与ROOT

AlmaLinux 介绍 AlmaLinux OS 是一个开源、社区驱动的 Linux 操作系统,它填补了因 CentOS 稳定版本停止维护而留下的空白,同时更加强大。 安装 AlmaLinux 这个我用的是 windows 子系统进行安装 首先打开微软商店,然后搜索AlmaLinux&#…

利用MobaXterm连接服务器的全程配置

一、服务器上的操作 1.1 保证openssh的安装 openssh安装命令如下 apt-get update apt install openssh-server1.2 保证SSH服务没有在相应端口上侦听连接 1确保本地 SSH 服务正在运行 可以尝试使用以下命令检查 SSH 服务的状态(在大多数 Linux 系统上&#xff0…

信息系统项目管理师第四版学习笔记——项目立项管理

项目建议与立项申请 立项申请又称为项目建议书,是项目建设单位向上级主管部门提交项目申请时所必须的文件,项目建议书是项目发展周期的初始阶段,是国家或上级主管部门选择项目的依据,也是可行性研究的依据。 项目建议书应该包括…

Python生成ASCII艺术:将文字演绎成视觉盛宴

文章目录 介绍安装使用终端命令字体展示介绍 ASCII艺术也被称为“计算机文本艺术”,它涉及将特殊字符有智慧地放置于字母之间,以制作出分布在多行文本上的视觉形状。今天和大家分享一个Python库,它可以将文本转换为ASCII艺术,让文字看起来更花哨。 运用场景:我们可以将ASC…

【力扣每日一题】2023.10.10 移动机器人

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目比较复杂,我概括一下。给我们一个数组表示不同机器人在一维坐标轴上的初始位置,还有一个字符串表示每个机器人…