sed命令
Stream EDitor, 行编辑器(文本处理工具三剑客之一)
sed :sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
通俗一点解释,就是sed不会直接修改原文件,而是类似把文件数据调取到内存中进行编辑,而原文件不会被修改,除非你加上确认修改的选项才会修改,厉害的是sed很强大,功能很多,千万别小看他
sed 基本框架
-
sed 命令的基本用法示例
sed 与sed -n 的区别:
-
sed -e 多点编辑
-e 选项可以同时执行多个操作,例子中“s/root/test1/”“[email protected]@[email protected]” 均为文本替换命令,“/”“@”还有“#”均可以作为分隔符,你会问,图中并没有把所有的root替换为test1 ,也没有吧所有的bin替换为test2,只要在test1/和test2/后面加g选项,即可替换全文中匹配到的字符、字符串,图如下:
地址定界
即sed 命令需要匹配的范围,可以是单行,可以是多行,也可以是指定的某些行,均可实现相应操作
很简单,上图是匹配/etc/passwd文件中的1-5行,应该很容易理解,-p选项是用来输出匹配到的行
若要匹配单行只要'#p'即可,#为行号
sed 编辑命令
编辑命令很多,只要记住常用的就可以了,其余的可以作为了解,要会用,用的到的时候能查到就可以了
d: 删除模式空间匹配的行,并立即启用下一轮循环,如下图:
p: 打印当前模式空间内容,追加到默认输出之后,如下图:
w /path/somefile: 保存模式匹配的行至指定文件,如下图:给定1-10数字,输出奇数行到文件test1 中。
转载于:https://blog.51cto.com/11742700/2068766