当前位置: 首页 > news >正文

【学习篇】Linux中grep、sed、awk

Linux 文本处理三剑客 – awk, sed, grep

grep过滤文本

https://zhuanlan.zhihu.com/p/561445240

grep 是 Linux/Unix 系统中的一个命令行工具,用于从文件中搜索文本或字符串。grep 代表全局正则表达式打印。当我们使用指定字符串运行 grep 命令时,如果匹配,则它将显示包含该字符串的所在行,而不修改现有文件的内容。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

sed修改文本

参考链接:https://blog.csdn.net/qq_43773590/article/details/119711444
https://blog.csdn.net/m0_59388634/article/details/122047377

sed编辑器被称作流编辑器。流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑。

sed 命令的命令格式是这样的:
$ sed command file
其中,command 部分是 sed 命令的精髓,对 command 部分的掌握程度决定了你是不是 sed 高手。

command 部分可以分为两块知识:一块是范围设定,一块是动作处理。

范围设定,可以采用两种不同的方式来表达:
指定行数:比如‘3,5’表示第 3、第 4 和第 5行;而‘5,$’表示第 5 行至文件最后一行。
模式匹配:比如/ ^ [^dD]/表示匹配行首不是以 d 或 D 开头的行。

而动作处理部分,会提供很丰富的动作供你选择,下面就来介绍几个最常用的动作吧:
d:表示删除行。
p:打印该行。
r:读取指定文件的内容。
w:写入指定文件。
a:在下面插入新行新内容。

sed的常用编辑命令
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,整行替换
d :删除,删除指定行delete,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,字符串替换,通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
=:输出行号
r:将文件的内容读入 read
w:将文本写入文件 write

awk处理文本

https://blog.csdn.net/Dark_Tk/article/details/114844529

awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。

sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个“字段”然后再进行处理。awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符“&&”表示“与”、“||”表示“或”、“!”表示“非”;还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。

命令格式
awk 选项 ‘模式或条件 {操作}’ 文件 1 文件 2 …
awk -f 脚本文件 文件 1 文件 2 …

参考链接:https://zhuanlan.zhihu.com/p/51771974

awk ‘{pattern + action}’ {filenames}
尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。

awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。

awk常见的内建变量
FS:列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
NF:当前处理的行的字段个数。
NR:当前处理的行的行号(序数)。
$0:当前处理的行的整行内容。
$n:当前处理行的第n个字段(第n列)。
FILENAME:被处理的文件名。
RS:行分隔符。awk从文件上读取资料时,将根据RS的定义把读取的资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’

awk中同时提供了print和printf两种打印输出的函数。

其中print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。

printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。

相关文章:

  • Qt手写ListView
  • dom api
  • Unity中Shader的Standard材质解析(二)
  • 媒体格式转换软件Permute 3 mac中文版软件特点
  • C百题--7.输出乘法表
  • 【RocketMq系列-02】RocketMq的架构解析和高性能设计
  • Linux每日智囊
  • 第二类曲线积分@对坐标的曲线积分
  • 学习笔记,http协议1.0,1.1,2.0之间的差别
  • macos端文件夹快速访问工具 Default Folder X 最新for mac
  • 【数据结构】B : DS图应用--最短路径
  • Windows任务管理器内存性能界面各个参数含义
  • 【操作系统】线程的状态
  • OpenCV将两张图片拼接成一张图片
  • 有了倾斜摄影,如何搭建一座智慧城市?
  • .pyc 想到的一些问题
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Angular 4.x 动态创建组件
  • js
  • MobX
  • Otto开发初探——微服务依赖管理新利器
  • Spark RDD学习: aggregate函数
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • vue-loader 源码解析系列之 selector
  • vue-router 实现分析
  • 面试遇到的一些题
  • ​虚拟化系列介绍(十)
  • #QT(串口助手-界面)
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (175)FPGA门控时钟技术
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (强烈推荐)移动端音视频从零到上手(上)
  • (强烈推荐)移动端音视频从零到上手(下)
  • (转)http协议
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)德国人的记事本
  • ../depcomp: line 571: exec: g++: not found
  • .jks文件(JAVA KeyStore)
  • .Net 6.0 处理跨域的方式
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET Standard 的管理策略
  • .net6 webapi log4net完整配置使用流程
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [Algorithm][综合训练][拜访][买卖股票的最好时机(四)]详细讲解
  • [Android]Tool-Systrace
  • [Asp.net MVC]Asp.net MVC5系列——Razor语法
  • [C++]类和对象(中)
  • [Hive] 常见函数
  • [JavaScript] JavaScript事件注册,事件委托,冒泡,捕获,事件流
  • [java进阶]——方法引用改写Lambda表达式