文本处理器
Linux/UNIX在<代码> 代码>系统中包含很多种文本处理器或文本编辑器,其中包括我们之前学习过的<代码> VIM> 代码编辑器与grep <代码> 代码>等。而<代码> grep、sed、awk> 代码更是<代码>壳> 代码编程中经常用到的文本处理工具,被称之为<代码>壳> 代码编程三剑客。
sed工具
<代码> sed(流编辑器)代码>是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除,替换,添加,移动等),最后输出所有行或者仅输出处理的某些行。<代码> sed> 代码也可以在无交互的情况下实现相复杂的文本处理操作,被广泛应用于<代码> 代码>壳脚本中,用以完成各种自动化处理任务。
-
<李>
<代码> sed> 代码的工作流程主要包括读取,执行和显示三个过程
-
<李>读取:<代码> sed> 代码从输入流(文件,管道,标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,<代码>模式空间> 代码)李>
<李>执行:默认情况下,所有的<代码> sed 代码>命令都在模式空间中顺序地执行,除非指定了行的地址,否则<代码> sed 代码>命令将会在所有的行上依次执行李>
<李>显示:发送修改后的内容到输出流。再发送数据后,模式空间将会被清空李>
<李>在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完李>
sed命令常见用法
-
<李>
sed命令有两种格式:
<代码> sed(选项)的操作的参数//安问笔侵覆僮鞯哪勘晡募?当存在多个操作对象时用,文件之间用逗号”、“分隔 或 sed(选项)- f scriptfile参数//scriptfile表示脚本文件,需要用“- f”选项指定代码>李> <李>
常见sed命令选项
-
<李> <代码> - e 代码>或<代码>=> 代码:——表达表示用指定命令或者脚本来处理输入的文本文件李>
<李> <代码> - f 代码>或<代码>=> 代码:——文件表示用指定的脚本文件来处理输入的文本文件李>
<李> <代码> - h 代码>或<代码>——帮助> 代码:显示帮助李>
<李> <代码> n 代码>,<代码>——安静的代码>或<代码>沉默> 代码:表示仅显示处理后的结果李>
<李> <代码> - 代码>:直接编辑文本文件李>
-
<李> <代码> 代码>:增加,在当前行下面增加一行指定内容李>
<李> <代码> c> 代码:替换,将选定行替换为指定内容李>
<李> <代码> d> 代码:删除,删除选定的行李>
<李> <代码>我> 代码:插入,在选定行上面插入一行指定内容李>
<李> <代码> p> 代码:打印,如果同时指定行,表示打印指定行,如果不指定行,则表示打印所有内容,如果有非打印字符,则以ASCII代码> <代码>码输出。其通常与<代码>“n”代码>选项一起使用李>
<李> <代码> 代码>:替换,替换指定字符李>
<李> <代码> y 代码>:字符转换李>
李
示例
<强> 1)输出符合条件的文本(p表示正常输出)强>
<代码> [root@localhost选择]# sed - n ' p ' httpd。txt//输出文件所有内容,等同猫httpd.txt # #这是主Apache HTTP服务器配置文件。它包含了 #配置指令给服务器的指令。 # & lt; URL: http://httpd.apache.org/docs/2.4/>的详细信息。 特别是#,看到的 # & lt; URL: http://httpd.apache.org/docs/2.4/mod/directives.html> #讨论的每个配置指令。 # #不只是阅读说明书在这里没有理解 #他们做什么。他们在这里配置="/etc/vsftpd/vsftpd.conf” #备份原来的配置文件,检测文件名为/etc/vsftpd/vsftpd.conf。贝克备份文件是否存在,若不存在则使用cp命令进行文件备份 [!$ CONFIG - e”。贝克”),和cp配置配置美元。贝克//基于样本配置进行调整,覆盖现有文件 sed - e '/^ anonymous_enable/s/是的/不/g的样品比美元;美元配置 sed - i - e '/^ local_enable/s/没有/是的/g - e '/^ write_enable/s/没有/是的/g”配置grep“倾听”配置美元| | sed - $ alisten=是的美元配置 #启动vsftpd服务,并设为开机后自动运行systemctl vsftpd重启 systemctl启用vsftpd (root@localhost ~) # * * chmod + x local_only_ftp.sh壳牌编程之正则表达式(二)