一文教会你使用Linux三剑客(grep、sed、awk)处理文本文件

如题所述

大家好,我是怪兽。


作为一名合格的程序员,在实际开发中,我们常常需要在服务器终端执行一些运维操作,而在服务器上没有图形界面,所以处理文本文件显得尤为麻烦。但Linux的强大终端命令提供了比图形界面更强大的功能,今天怪兽将教你快速掌握Linux中的文本处理三剑客——grep、awk、sed。


Linux文本处理三剑客包括grep、awk、sed,它们以正则表达式作为基础。标准和扩展正则表达式在Linux系统中得到支持。首先,我们来明确一下这三剑客的特点及应用场景。


grep命令家族包括grep、egrep、fgrep三个子命令,适用于不同场景。


我们以新建的testGrep文件为例,内容如下:



    1. 找到包含Grep字符串的所有内容行
    2. 精确查找Grep4字符串所在的内容行
    3. 忽略大小写查找test字符串所在的内容行
    4. 从标准输入来过滤忽略大小写查找test字符串所在的内容行

执行以上命令结果如下:



    通过上面的结果可以看到,并非精确查找只包含Grep字符串的内容,而是模糊匹配,只要是包含Grep字符串,其内容都会被检索到。
    执行上面的命令并不能查到任何结果,这是因为grep命令默认是严格大小写的,所以如果想要查找到test字符串所在的内容行,必须通过参数设定来忽略大小写。

sed命令是Stream Editor的缩写,在处理行内容时功能强大,通过脚本来处理文本文件或标准输入。


使用sed命令的语法如下,我们通过新建的sedtest.txt文本文件为例:



    案例操作总结:

1. 参数介绍


2. 动作介绍


awk命令由发明该工具的三位作者姓名首字母组成,用于格式化输出,三位作者分别是:



    awk按照行来读取文档,根据输入分隔符切分成小部分,用内建变量表示。

常用参数如下,我们以新建的log.txt文本文件为例:



    格式化输出内容
    指定分隔符格式化输出内容
    设置变量并在脚本内使用
    通过指定脚本来处理文本文件

awk的三位创建者已将其定义为“样式扫描和处理语言”,详细学习可参考:awk.readthedocs.io/en/l...


接下来通过编写awk脚本来统计学生成绩数据,新建student.txt文本文件,内容如下:


编写script.txt脚本如下:


执行命令并得到执行结果。


通过脚本修改统计计算之前的匹配条件,只统计ss同学的成绩。


总结如下:



    可以使用$+数字的形式表示当前行的第几列,$0表示整行内容。
    可以通过-F参数指定分隔符。
    可以通过-v参数定义变量并在脚本中使用。
    可以通过-f参数指定脚本文件位置,实现文本文件处理。

这就是Linux文本处理三剑客grep、awk、sed的使用方法和技巧,希望对你有所帮助!

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜