liunx中sed用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了liunx中sed用法相关的知识,希望对你有一定的参考价值。
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sed使用参数:
-n∶取消默认的输出,使用安静(silent)模式。
-d: 删除
-e∶进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编 辑
-f∶指定sed脚本的文件名. 直接将 sed 的动作写在一个档案内。
-r∶sed 的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法)
-i∶直接修改读取的文件内容,而不是由屏幕输出
举例:删除某行
删除第三行到第四行
[[email protected] tmp]# sed ‘3,4d‘ fstab
删除最后一行
[[email protected] tmp]# sed ‘$d‘ fstab
显示第三行到第四行
[[email protected] tmp]# sed -n ‘3,4p‘ fstab
显示最后一行
[[email protected] tmp]# sed -n ‘$p‘ fstab
显示第五行
[[email protected] tmp]# sed -n ‘5p‘ fstab
查询关键字xs所在所有的行
[[email protected] tmp]# sed -n ‘/xs/p‘ fstab
在第一行后增加字符串“hello”
[[email protected] tmp]# sed -n ‘1a hello‘ fsta
在第一行到第三行后增加字符串“hello”
[[email protected] tmp]# sed -n ‘1,3a hello‘ fsta
练习
1:删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符;
~]# sed ‘[email protected]^[[:space:]]\[email protected]@‘ /etc/grub2.cfg
2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符;
~]# sed ‘[email protected]^#[[:space:]]*@@‘ /etc/fstab
3:输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname;
~]# echo "/var/log/messages/" | sed ‘[email protected][^/]\+/\[email protected]@‘
本文出自 “11282055” 博客,请务必保留此出处http://11292055.blog.51cto.com/11282055/1752958
以上是关于liunx中sed用法的主要内容,如果未能解决你的问题,请参考以下文章