流编辑器Sed
Sed简介Sed是一款流编辑工具,用来对文本进行过滤与替换操作,特别是当你想要对几十个配置文件做统一修改时,你会感受到Sed的魅力!Sed通过一次仅读取一行内容来对某些指令进行处理后输出,所以Sed更适合于处理大数据文件。首先,Sed通过文件或管道读取文件内容,但Sed默认并不直接修改源文件,而是将读入的内容复制到缓冲区中,我们称之为模式空间(pattern space),所有的指令操作都是在模式空间中进行的,然后Sed根据相应的指令对模式空间中的内容进行处理并输出结果,默认输出至标准输出(即屏幕上)。Sed工作流程如下图所示: Sed基本语法格式Sed从文件中读取数据,如果没有输入文件,则默认对标准输入进程数据进行处理,脚本指令是第一个非“-”开头的参数,具体语法格式如下。 用法:sed[选项]...{脚本指令} [输入文件]... -e script 允许多个脚本指令被执行 Sed 入门范例 address { command1 command2 command3 } 注意:第一个命令可以和左花括号在同一行,但右花括号必须单独处于一行。此外,命令后添加空格会产生错误。 Sed指令与脚本 1.Sed常用指令汇总
范例1 范例1所使用的样本文件为(注意有空白行): [[email?protected] ~]# cat test.txt IPADDR=192.168.0.1 GATEWAY=192.168.0.254 范例1:删除文件中空白行 编写sed脚本为: [[email?protected] ~]# cat sed.sh 执行sed程序的结果如下: [[email?protected] ~]# sed -f sed.sh test.txt ? 范例2~范例5所使用的样本文件为: [[email?protected] ~]# cat test.txt 范例2:在static行后添加一行,内容为IPADDR=192.168.0.1 [[email?protected] ~]# sed ‘/static/a IPADDR=192.168.0.1‘ test.txt 范例3:在匹配NETMASK的行前插入内容IPADDR=192.168.0.1 [[email?protected] ~]# sed ‘/NETMASK/i IPADDR=192.168.0.1‘ test.txt 范例4:将包含ONBOOT行的内容更改为ONBOOT=no [[email?protected] ~]# sed ‘/ONBOOT/c ONBOOT=no‘ test.txt 范例5:列印(l)显示模式空间中的内容,显示非打印字符,一般与-n一起使用,否则会输出两次 [[email?protected] ~]# sed -n ‘1,2l‘ test.txt? ? # 在sed脚本文件中,需要#n屏蔽自动输出 结果如下: DEVICE=ens33$ 范例6:显示第一、二行的内容 打印(p):作用类似于l(列印),但不显示非显示字符,一般与-n配合使用 [[email?protected] ~]# sed -n ‘1,2p‘ test.txt 结果如下: 范例7:显示test.txt内容的前两行内容后退出sed指令 [[email?protected] ~]# sed ‘2q‘ test.txt ? 参考自,丁明一? ? 编著? ? 《Linux运维之道》 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Linux:检查套接字/管道是否损坏而不执行read()/ write()
- 【转载】Linux查看物理CPU个数、核数、逻辑CPU个数
- linux – 采购env输出
- 命令行界面 – 我如何从Linux命令行知道我有哪种处理器?
- linux – JMeter坚持’在端口4445上等待可能的关闭消息’
- LINUX学习:Linux上安装和编译OpenCV3.0.0
- linux – 在Fedora Core 15中自动挂载samba窗口共享
- Fatal error: Call to undefined function json_decode()解
- Linux下 正则表达式的用法
- linux – 检查“make”的输出,如果失败则退出bash脚本