您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
马哥linux运维学习笔记-sed命令
发布时间:2018-06-24 20:54:39编辑:雪饮阅读()
sed是什么
sed是流编辑器
sed基本用法:
sed:stream editor
行编辑器
sed:模式空间
默认不编辑原文件,只对模式空间中的数据做处理
sed命令基本格式
sed [options] 'AddressCommand' file ...
options:
-n:静默模式,不再默认显示模式空间中的内容
-i:直接修改原文件
Address:
1、StartLine,Endline
比如1,100
$:最末行
2、/RegExp/
/^root/
3、/pattern1/,/pattern2/
第一次被pattern1匹配到的行开始,到第一次被pattern2匹配到的行结束,这中间的所有行
4、LineNumber
直接指定行
5、StartLine,+N
从startLine开始,向后的N行
Command
d:删除符号条件的行
p:打印匹配行(和-n选项一起使用)
a \string 在指定的行后添加新行,内容为string
r FILE:将指定的文件的内容添加至符合条件的行处
w FILE:将地址指定的范围内容的行另存至指定的文件中
s/pattern/string/修饰符:查找并替换,默认只替换每行中第一次被模式匹配到的字符串
可加修饰符
g:全局替换
i:忽略字符大小写
s///:s###,s@@@模式符号也是可以更改的,比如///更改为###,那么在###中有/时就不需要转义了,但是#中若有#则需要转义
&:引用模式匹配整个pattern,没有后向引用方便
sed实例:
从某个文件中读取内容,并在输出时删除第1到2行
sed '1,2d' /etc/fstab
通过正则匹配在输出时删除掉包含"/dev"的行
sed '/\/dev/d' /etc/fstab
从某个文件中读取内容,并在输出时从第一行开始向后删除2行
sed '1,+2d' /etc/fstab
从某个文件中读取内容,并在输出时删除指定行
sed '1d' /etc/fstab
从某个文件中匹配出以"/dev"开头的行
sed -n '/^\/dev/p' /etc/fstab
从某个文件中匹配出以“/dev”开头的行,并在符合条件的行后添加自定义字符串内容为一行
sed '/^\/dev/a \# helloworld' /etc/fstab
基于上面这个实例还可以用换行符\n
sed '/^\/dev/a \# helloworld\n hello dmj' /etc/fstab
在输出某文件内容时在某(这里是第2行)行后插入另外一个文件的内容
sed '2r /etc/issue' /etc/fstab
在输出某文件内容时,在选定的每行后插入另外一个文件的内容
sed '1,2r /etc/issue' /etc/fstab
在输出某文件内容时,将选定的行写入到另外一个文件
sed '/^\/dev/w /tmp/oot.txt' /etc/fstab
在输出某文件内容时,将匹配的内容替换为指定的字符串
sed 's/dev/DMJ/' /etc/fstab
在输出某文件内容时,将匹配到的内容后面增加某字符(这里把d.v匹配结果替换为d.vs)
sed 's#d.v#&s#g' /etc/fstab
和上面的实例一样,只是以反向引用实现
sed 's#\(d.v\)#\1s#g' /etc/fstab
某些时候只能用反向引用实现,下面实例和上面差不多,只是匹配d.v后替换为d.V
sed 's#\(d.\)v#\1V#g' /etc/fstab
关键字词:sed