在Linux/UNIX系统中包含很多文本处理器或文本编辑器,其中grep、sed和awk是shell编程中经常用到的文本处理工具,因此,被业内的人广泛的称之为“shell编程三剑客”。
grep命令工具grep命令工具,在日常生活中,会经常用到,这里也就不多说了,如果有不明白的朋友,请参考博文:Shell脚本应用之正则表达式详解,里面详细介绍了grep命令的相关参数及使用,
sed命令工具sed是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑,最后输出所有行活仅输出处理的某些行,sed可以在无交互的情况下实现相当复杂的文本处理操作。被广泛的应用于shell脚本中,用于完成各种自动化处理任务。
sed的工作流程主要包括: 1. 读取:sed从输入流中读取一行内容不能够存储到临时的缓冲区中; 2. 执行:默认情况下所有的sed命令都在模式空间中按顺序地执行,除非指定了行的地址,否则sed命令将会再所有行上依次执行; 3. 显示:发送修改后的内容到输出流,再发送数据后,模式空间将会被清空。 注意:在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容都被处理完。 1)sed命令的语法及相关参数: sed [选项] '操作' 参数 或 sed [选项] -f scriptfile 参数常见的sed命令选项的主要参数:
如果要求在第几行到第几行之间进行修改等,常见的操作参数包括:
2)sed命令用法示例(注意以下操作不会改变文件本身内容,如果需要修改必须带“-i”选项) 1.输出符合条件的文本 [root@localhost ~]# sed -n 'p' test.txt //输出所有内容,等同于“cat test.txt” [root@localhost ~]# sed -n '3p' test.txt //输出第三行内容 [root@localhost ~]# sed -n '3,5p' test.txt //输出3~5行 [root@localhost ~]# sed -n 'p;n' test.txt //输出所有奇数行,n表示读入下一行数据 [root@localhost ~]# sed -n 'n;p' test.txt //输出所有偶数行,n表示读入下一行数据 [root@localhost ~]# sed -n '1,5{p;n}' test.txt //输出第1行~第5行之间的奇数行(第1、3、5行) [root@localhost ~]# sed -n '10,${n;p}' test.txt //输出第10行至文件尾部之间的偶数行(包括空行)
sed命令与正则表达式结合使用的案例
sed命令结合正则表达式时,格式略微有些不同,正则表达式以“/”包围。
nl命令用于计算文件的行数
[root@localhost ~]# nl test.txt | sed '3d' //删除第3行