Linux文本处理三剑客
文章平均质量分 53
介绍Linux文本处理三剑客,grep,sed,awk
奇妙之二进制
csdn博客专家,C/C++领域优质创作者,抖音搜奇妙之二进制,专注于Linux C/C++、嵌入式Linux开发,偶尔谈谈人生,目前致力于完成大约500篇的linux C/C++开发知识体系库,所有的文章都会一直保持更新(优化内容、排版),想学习的可以订阅我的专栏,也可以关注Linux 世界。
展开
-
sed 正则表达式
sed是强大,高效的处理正则表达式。一些复杂的任务,可以解决简单的正则表达式。任何命令行专家都知道正则表达式的威力。本教程介绍了标准的正则表达式,POSIX类的正则表达式和元字符。考虑我们有一个文本文件 books.txt 将被处理,它有以下内容:标准的正则表达式行开始 (^) 插入符号(^)符号用于一行的开始匹配。下面的例子打印所有的启动与模式“the”行。 执行上面的代码,会得到如下结果:行尾 ($) 行尾是由美元符号($)符号表示。下面的例子打印“Coelho”结尾的行。 执行上转载 2022-12-05 10:15:15 · 1184 阅读 · 0 评论 -
sed打印、删除匹配行
传递shell变量,单引号要改成双引号。删除不包含green的行。原创 2022-10-26 21:57:02 · 2930 阅读 · 0 评论 -
sed在匹配行前面或者后面插入一行
注意:这里没有s/原/新/的方法,也就是没有s这个参数,并且最后没有/.2.通过sed实现在搜索到某个字符串之后,在下一行插入字符串。如果要在匹配的行前面插入一行,把a命令改成i命令即可。新插入的行或者匹配行如果有特殊字符,记得转义。1.查看原文件中的内容。转载 2022-10-26 19:40:38 · 13134 阅读 · 0 评论 -
sed字符串替换用法大全
单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义。”$”符号如果在引号中表示行尾,但是在引号外却表示末行(最后一行)转载 2022-10-26 19:33:41 · 6959 阅读 · 0 评论 -
grep命令使用大全
grep 指令用于查找文件里匹配指定模式的字符串,如果发现某文件的内容符合所指定的pattern,预设 grep 指令会把含有样式的那一行打印出来。若不指定任何文件名称,或是所给予的文件名为,则 grep 指令会从标准输入设备读取数据。原创 2022-10-12 14:11:22 · 15015 阅读 · 1 评论 -
awk从入门到入土(26)gawk线上手册
学无止境,关于gawk的更多内容,请查阅gawk官方手册:https://www.gnu.org/software/gawk/manual/gawk.html原创 2022-07-03 23:35:36 · 544 阅读 · 0 评论 -
awk从入门到入土(25)awk综合案例
代码】awk从入门到入土(16)awk综合案例。原创 2022-07-22 10:20:12 · 618 阅读 · 0 评论 -
awk从入门到入土(24)提取指令网卡的ip
代码】awk从入门到入土(24)提取指令网卡的ip。原创 2022-07-25 01:58:19 · 1045 阅读 · 0 评论 -
awk从入门到入土(23)awk内置变量ARGC、ARGC--命令行参数传递
用户手动增、删ARGV元素时,不会自动修改ARGC,而awk读取文件时是根据ARGC值来确定的。所以,在增加ARGV元素之后,要手动的去增加ARGC的值。此外,增减ARGC的值,都不会影响ARGV数组,仅仅只是影响awk读取文件的数量。awk提供了两个内置变量,ARGC表示命令行参数个数,ARGV是个存放命令行参数的数组,大小由ARGC指示。–后面的选项表示待处理的文件名,我们自己的选项也要放在这里,不然会被当做awk的选项进行处理。下面的例子我们将-开头的参数删除,以及如果它后面跟着参数,也删除。....原创 2022-07-25 01:16:47 · 713 阅读 · 0 评论 -
awk从入门到入土(21)awk脚本调试
awk支持调试模式,像gdb一样设置断点、单步调试awk脚本。命令的使用和gdb非常相似,很简单,就不做过多介绍了。原创 2022-07-24 23:47:15 · 833 阅读 · 0 评论 -
awk从入门到入土(20)awk解析命令行参数
需要@include“getopt”,表示将该getopt.awk文件include进来,这个文件是gawk提供的。需要注意添加break,示例中a选项没有加break,当输入a选项时,会入侵到b选项。shell脚本提供了getopt函数可以解析命令行参数,awk自然也不例外。用法和C语言完全一模一样。......原创 2022-07-24 17:43:19 · 776 阅读 · 0 评论 -
awk从入门到入土(19)awk扩展插件,让awk如虎添翼
gettimeofday()返回自1970-1-1至今的秒数。result=sleep(seconds)seconds是个浮点数。读取整个文件的内容,赋值给result,文件不存在返回空。有了它,我们可以不再需要sed了,减少sed学习负担。原创 2022-07-24 14:25:10 · 609 阅读 · 0 评论 -
awk从入门到入土(17)awk多行写法
代码】awk从入门到入土(17)awk多行写法。原创 2022-07-24 02:18:07 · 1158 阅读 · 0 评论 -
awk从入门到入土(16)awk变量类型探讨--关于数字和string两种类型
基本思想是,看起来是数字的用户输入——并且只有用户输入——应该被视为数字,即使它实际上是由字符组成的,因此也是一个字符串。因此,例如,当字符串常量"+3.14"出现在程序源代码中时,它是一个字符串——即使它看起来是数字的——并且从不被视为用于比较目的的数字。那么数字字符串的类型是什么?这意味着它们的类型可以随着程序的运行而改变,从使用前的无类型,到字符串或数字,然后从字符串到数字或从数字到字符串,随着程序的进行。简而言之,当一个操作数是“纯”字符串时,例如字符串常量,则执行字符串比较。......原创 2022-07-27 00:56:24 · 702 阅读 · 0 评论 -
awk从入门到入土(15)awk执行外部命令
函数是现代编程语言的基本组成单元,大型的应用程序都是通过独立的可重用的 函数 来划分一个个功能。现代的编程语言中,如果不能够自定义函数,那简直无法想象,就像电一样,突然间没有了,感觉都活不下去了。不过放心,虽然日常使用 AWK 时并不会需要自己定义函数,并不代表 AWK 不能够自定义函数。本章节,我们就来研究研究 AWK 中如何自定义函数。从 AWK 函数的语法中可以看出,AWK 中定义函数的方式跟 C 语言 是类似的。当然了,如果你会 JavaScript,就会发现,简直一模一样。AWK 中的函数定义由原创 2022-07-03 23:29:05 · 826 阅读 · 0 评论 -
awk从入门到入土(14)awk输出重定向
到目前为止,我们的 AWK 程序都是把结果输出到 标准输出 上。虽然 AWK 程序没有打开文件/读写文件等相应的功能,但 AWK 程序同样支持 重定向 操作,也就是支持把数据输出到 文件 上。AWK 的重定向操作一般出现在 或 语句后面。AWK中的重定向与 shell 命令中的重定向类似,只是它们写在 AWK 程序中。重定向操作符 就是把 AWK 程序的输出结果重定向到某个文件。不过要注意的是:重定向操作符 > 会先删除文件的原先内容然后再写入数据,也就是说原先的内容不存在了。重定向操作符 > 操作符转载 2022-07-03 23:53:06 · 1763 阅读 · 0 评论 -
awk从入门到入土(12)awk也可以写脚本,替代shell
概述和写 shell 脚本差不多,例如在我的系统上,awk 工具安装在 /user/bin/awk 目录,所以我的 awk 脚本以如下内容作为开头:上面一行的解释如下:说是这么说,现在从下面的简单例子开始,让我们深入研究一些可执行的 awk 脚本。使用你最喜欢的编辑器创建一个新文件,像下面这样:然后把下面代码粘贴到文件中:保存文件后退出,然后执行下面命令,使得脚本可执行:然后,执行它:输出样例:添加注释一个严格的程序员一定会问:“注释呢?”。是的,你可以在 awk 脚本中包含注释。在代码中写注释转载 2022-07-03 21:19:07 · 552 阅读 · 0 评论 -
awk从入门到入土(11)awk getline函数详解
**getline命令是我个人认为awk最强大的一个命令。因为它彻底改变了awk的运行逻辑。**awk本质上就是一个for循环,它每次对输入文件的一行进行处理,然后转而执行下一行,直到整个文件的每一行都被执行完毕。整个过程是自动的,你无需做什么。但是,getline命令却可以让你去控制循环。当然,getline命令执行后,awk会设置NF,NR,FNR和$0等这些内部变量。我们先看一个简单的例子,打印出从1到10之间的偶数:那么getline究竟是实现什么功能呢?正如getline的翻译,得到行,但是注意转载 2022-07-03 20:09:37 · 1393 阅读 · 0 评论 -
awk从入土到入门(10)awk内置函数
AWK 为程序开发者提供了丰富的内置函数。这一章节会讲解 AWK 提供的算术函数、字符串操作函数、时间操作相关的函数、位操作函数以及其它各种各样的函数。AWK 提供了如下的内置算术运算函数:该函数返回正切值 y/x 的角度值,角度以弧度为单位。示例如下:执行上面的命令得到如下结果:cos(expr)该函数返回 expr 的余弦值, 输入参数以弧度为单位。示例如下:执行上面的命令得到如下的结果:exp(expr)此函数返回自然数 e 的 expr 次幂。执行上面的命令可以得到如下的结果:int转载 2022-07-03 18:21:36 · 1544 阅读 · 0 评论 -
awk从入门到入土(9)循环语句
除了前面介绍的条件语句,AWK 还提供了循环语句。该语句的作用就是当条件为真时重复执行一系列的命令。本章将讲解 AWK 中循环语句的使用方法。For 循环的语法如下:for 语句首先执行初始化动作( initialisation ),然后再检查条件( condition )。如果条件为真,则执行动作( action ),然后执行递增( increment )或者递减( decrement )操作。只要条件为真循环就会一直执行。每次循环结束都会进条件检查,若条件为假则结束 循环。下面的例子使用 For 循环原创 2022-07-03 17:46:52 · 579 阅读 · 0 评论 -
awk从入门到入土(8)数组
AWK 有关联数组这种数据结构,而这种数据结构最好的一个特点就是它的索引值不需要是连续的整数值。我们既可以使用数字也可以使用字符串作为数组的索引。除此之外,关联数组也不需要提前声明其大小,因为它在运行时可以自动的增大或减小。这一章节中将会讲解 AWK 数组的使用方法。如下为数组使用的语法格式:其中 array_name 是数组的名称,index 是数组索引,value 为数组中元素所赋予的值。为了进一步了解数组,我们先来看一下如何创建数组以及如何访问数组元素:执行上面的命令可以得到如下的结果:在上面的转载 2022-07-03 17:50:21 · 527 阅读 · 0 评论 -
awk从入门到入土(7)条件语句
与其实的编程语言一样,AWK 同样提供了条件语句控制程序的执行流程。这一章中我们会介绍 AWK 中条件语句的使用方法。条件语句测试条件然后根据条件选择执行相应的动作。下面是条件语句的语法:也可以使用花括号来执行一组操作:下面的例子判断数字是奇数还是偶数:执行上面的命令可以得到如下的结果:IF - ELSE 语句if-else语句中允许在条件为假时执行另外一组的动作。下面为 if-else 的语法格式:其中,条件为真时执行 action-1,条件为假时执行 action-2。下面是使用该语句判断数转载 2022-07-03 17:40:44 · 745 阅读 · 0 评论 -
awk从入门到入土(6)正则匹配写法大全
awk的pattern除了使用简单的条件表达式之外,还可以会用AWK 可以方便高效地处理正则表达式。大量复杂的任务都可以由极其简单的正则表达式来解决。每一个精通命令行的人都知道正则表达式真正的威力所在。这一章将着重讲解标准正则表达式的使用方法。awk的正则和普通正则基本一样,只不过在awk里需要将正则表达式用两个/包起来。点字符(.)可以匹配除了行结束字符的所有字符。比如下面的便子就可以匹配 fin, fun, fan 等等。执行上面命令可以得到如下结果:行开始行开始符(^)匹配一行的开始。下面的示例原创 2022-07-03 17:28:43 · 1376 阅读 · 0 评论 -
awk从入门到入土(5)简单条件匹配
我们之前一直在提,awk的使用语法如下(我想你已经很熟悉了):对于options(选项)而言,我们使用过-F选项,也使用过-v选项。对于Action(动作)而言,我们使用过print与printf,之后的文章中,我们还会对Action进行总结。对于Pattern(模式)而言,我们在刚开始学习awk时,就介绍了两种特殊模式,BEGIN模式和END模式,但是,我们并没有详细的介绍”模式”是什么,怎么用,而此处,我们将详细的介绍一下awk中的模式。“模式”这个词听上去文绉绉的,不是特别容易理解,那么我们换一种说法原创 2022-07-03 17:17:28 · 682 阅读 · 0 评论 -
awk从入门到入土(4)用户自定义变量
awk变量就像所有其他脚本语言那样是无类型的,可以存储任意类型的值,并且可以随时进行改变,后面这点区别于支持类型推断的语言(如:C#,定义时虽然不用指定类型,但是一旦赋值后类型就固定了)。变量随用随写,即使使用没初始化过的变量也不会报错。awk中所有的变量,无论是出现在BEGIN中的、BODY中的、END中的,抑或是后面要提到的function中的,通通都是全局的,也就是说只要变量名字相同,无论在任何地方做出了修改,其值都会延续到下一段执行的代码行上。这是变量使用中特别要注意的地方,否则就可能引发各转载 2022-07-04 00:20:34 · 705 阅读 · 0 评论 -
awk从入门到入土(3)awk内置函数printf和print实现格式化打印
awk中print与printf的主要差别显示在以下两点:print在显示多个结果的时候以逗号分隔,结果将这几部分的内容自动使用输出分隔符(字段输出分割符默认是空格,记录输出分割符默认是换行符)进行分隔,且不需要添加换行符\nprintf可以更加灵活的控制某一个字段的输出格式,通过使用诸如%-12s,%3.1f等格式化方法。printf更加接近使用C语言的同学的习惯。我们来总结一下,在awk中使用printf动作时,需要注意以下3点。1)使用printf动作输出的文本不会换行,如果需要换行,可以在对应的”原创 2022-07-03 01:21:57 · 1956 阅读 · 0 评论 -
awk从入门到入土(2)认识awk内置变量和变量的使用
学习任何一门语法都是从变量开始。内置变量表我们结合实例来演示每个变量的使用,所有操作都使用大家熟悉的/etc/passwd文件。在前一篇文章中我们略微提到过”分隔符”,但是并没有细说,那么我们今天就聊聊什么是分隔符,awk有哪些分隔符,awk的默认分割符是空格,但是,这样描述并不精确,因为,awk的分隔符还分为两种,”输入分隔符” 和 “输出分隔符” 。此处我们先将分隔符的概念列出,看不懂没关系,我们会一一进行举例,到时自然会明白。输入分隔符,英文原文为field separator,此处简称为FS输入分原创 2022-07-03 00:43:09 · 562 阅读 · 0 评论 -
awk从入门到入土(1)awk初次会面大展神功
先给大家一个awk的简单实例,带大家了解awk命令的基本结构。先创建一个名为 marks.txt 的文件。其中包括序列号、学生名字、课程名称与所得分数。接下来,我们将使用 AWK 脚本来显示输出文件中的内容,同时输出表头信息。执行上面的代码后,将会输出如下的结果:输出多了个表头和分割线,除此之外看起来和源文件内容没什么差别。但这条语句描述了awk语法的基本结构,下面介绍。awk在不同的语境有不同含义,下面的awk是指awk解释器,program text是指awk脚本,用分号包围起来。第一种和第二种原创 2022-07-02 23:54:39 · 525 阅读 · 0 评论 -
awk从入门到入土(0)awk概述
AWK 是一种解释执行的编程语言。它非常的强大,被设计用来专门处理文本数据。由 GNU/Linux 发布的 AWK 版本通常被称之为 GNU AWK,由自由软件基金( Free Software Foundation, FSF)负责开发维护的。 目前总共有如下几种不同的 AWK 版本。awk的处理文本和数据的方式:逐行扫描文件,默认从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作,这些记为action。..................原创 2022-07-02 21:02:36 · 685 阅读 · 0 评论