vim ,sed
1.首先,sed作为一个流编译器,它是对文本进行处理的,它和grep虽然都是对文本进行处理的,但是sed的处理机制和grep还是有很大的不同的,grep:文本过滤(模式:pattern)工具;grep, egrep, fgrep(不支持正则表达式搜索)sed:stream editor,文本编辑工具;awk:Linux上的实现gawk,文本报告生成器。sed处理文本是一次处理一行的内容,把需要处理的行存储到临时缓冲区,称为“模式空间”,再sed处理缓冲区中的内容,而后,把处理后的内容输出到屏幕。
sed的格式为:
sed [option] … 'script' inputfile
-n :不输出模式空间内容的自动打印,常与 -p 配合使用
-e :多点编辑,就是-e …-e … 进行多条件匹配。
-r :是支持扩展正则表达式
-i :原处编辑;sed默认是岁对文件进行复制到模式空间内再进行编译,使用-i选项后,sed是直接对原文件进行的修改。
script :地址定界
(1).不给地址 :对全文进行处理
(2).单地址: #:指定的行 ;/pattern/ :被此处模式所能够匹配到的每一行
(3).地址范围:
#,# 从第一个#代替的数到第二个#代替的数的行
#,+#
/pat1/,/pat2/
#,/pat1/: 从#号开始到第一次能匹配结束
(4). 步进地址 ~
1~2 :指从第一行开始每次步进两行,1,3,5,7…奇数行编辑命令:
-d :删除模式空间匹配的行
-p :显示模式空间中的内容
a \text:在行的后面追加文本,支持使用\n实现多行追加。
i \text:在行的前面插入文本,支持使用\n实现多行插入
c \text:替换行为单行或多行文本
w /path/to/somefile:保存模式匹配的行至指定文件
r /path/from/somefile:读取指定文件的文本模式空间中匹配到的行后
= :为模式空间中的行打印行号
! :模式空间中匹配行取反处理
s / / / :查找替换,支持使用别的分隔符,s@ @ @,s # # # 这样的。 替换的标记 :g :行内全局替换p :显示替换成功的行 w /path/tosomefile :将替换成功的行保存至文件中。
——————————————————————————————–
sed 基础练习: # 对于文件的操作可以先使用cat查看一下文件中的内容,以便对sed显示后作为对比,观察结果。
1、删除/etc/grub2.conf文件中所有以空白开头的行行首的
空白字符
2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空
白字符的行的行首的#和空白字符
3、在/etc/passwd每一行行首增加#号
4、在/etc/fstab文件中不以#开头的行的行首增加#号
5、处理/etc/fstab路径,使用sed命令取出其目录名和基名
6、利用sed 取出ifconfig命令中本机的IPv4地址
原创文章,作者:zhong,如若转载,请注明出处:http://www.178linux.com/32056
评论列表(1条)
文章对sed的常见用法有了一个完整的总结,有理论也有自己的操作,可以尝试着用图来解释sed的工作原理,这样会看起来更清晰哦