Shell编程三剑客grep、sed和awk详解

在Linux/UNIX系统中包含很多文本处理器或文本编辑器,其中grepsedawk是shell编程中经常用到的文本处理工具,因此,被业内的人广泛的称之为“shell编程三剑客”

grep命令工具

grep命令工具,在日常生活中,会经常用到,这里也就不多说了,如果有不明白的朋友,请参考博文:Shell脚本应用之正则表达式详解,里面详细介绍了grep命令的相关参数及使用,

sed命令工具

sed是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑,最后输出所有行活仅输出处理的某些行,sed可以在无交互的情况下实现相当复杂的文本处理操作。被广泛的应用于shell脚本中,用于完成各种自动化处理任务。

sed的工作流程主要包括: 1. 读取:sed从输入流中读取一行内容不能够存储到临时的缓冲区中; 2. 执行:默认情况下所有的sed命令都在模式空间中按顺序地执行,除非指定了行的地址,否则sed命令将会再所有行上依次执行; 3. 显示:发送修改后的内容到输出流,再发送数据后,模式空间将会被清空。 注意:在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容都被处理完。 1)sed命令的语法及相关参数: sed [选项] '操作' 参数 或 sed [选项] -f scriptfile 参数

常见的sed命令选项的主要参数:

Shell编程三剑客详解


如果要求在第几行到第几行之间进行修改等,常见的操作参数包括:

Shell编程三剑客详解

2)sed命令用法示例(注意以下操作不会改变文件本身内容,如果需要修改必须带“-i”选项) 1.输出符合条件的文本 [root@localhost ~]# sed -n 'p' test.txt //输出所有内容,等同于“cat test.txt”

Shell编程三剑客详解

[root@localhost ~]# sed -n '3p' test.txt //输出第三行内容

Shell编程三剑客详解

[root@localhost ~]# sed -n '3,5p' test.txt //输出3~5行

[root@localhost ~]# sed -n 'p;n' test.txt //输出所有奇数行,n表示读入下一行数据

Shell编程三剑客详解

[root@localhost ~]# sed -n 'n;p' test.txt //输出所有偶数行,n表示读入下一行数据

Shell编程三剑客详解

[root@localhost ~]# sed -n '1,5{p;n}' test.txt //输出第1行~第5行之间的奇数行(第1、3、5行)

Shell编程三剑客详解

[root@localhost ~]# sed -n '10,${n;p}' test.txt //输出第10行至文件尾部之间的偶数行(包括空行)

sed命令与正则表达式结合使用的案例
sed命令结合正则表达式时,格式略微有些不同,正则表达式以“/”包围

[root@localhost ~]# sed -n '/the/p' test.txt //输出包含“the”的行

[root@localhost ~]# sed -n '4,/the/p' test.txt //输出从第4行到都第一个包含“the”的行

[root@localhost ~]# sed -n '/the/=' test.txt //输出包含“the”的行所在的行号(等号(=)用来输出行号)

Shell编程三剑客详解

[root@localhost ~]# sed -n '/^PI/p' test.txt //输出以“PI”开头的行

[root@localhost ~]# sed -n '/\<wood\>/p' test.txt //输出包含单词wood的行,\<、\>代表单词边界

2.删除符合条件的文本

nl命令用于计算文件的行数

[root@localhost ~]# nl test.txt | sed '3d' //删除第3行

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/45dceeced4ff0e614565a03148a563e1.html