sed常见用法
sed是流编辑器,默认不编辑源文件,是以行为单位从源文件抽取数据,进而处理再输出于屏幕上;可能有的人说那我直接vi不就好了嘛,但文本有几百成千上万的时候,你就不这么觉得了;这个时候就需要用到sed或者更为强大的awk了
流编辑器:是指向流水一样,抽取一行,处理一行,输出屏幕,抽取下一行,再处理显示,以此类推;而相对的vi等编辑器是将文件打开,内容都读取到缓存中,然后显示一个屏幕的内容给你,你再编辑;
sed用法
sed [option] 'AddressCommand' file ...
即sed 以什么方式[option],对文件{file}的哪些内容{Address},做什么操作{command} ;
-n: 静默模式
-i :直接修改源文件(风险较大,不推荐)
-e: Script -e Script:可以同时执行多个脚本
-f : /PATH/TO/SED_SCRIPT sed -f /path/script file
-r: 使用扩展正则表达式(相对基本正则有更好的元字符支持)
Address:
1, Startline,Endline
如: 1,100 即第1至100行; $:最后一行
2, /RegExp/ 正则表达式匹配 /^root/
3, /pattern1/,/pattern2/
第一次被patthern1匹配到内容开始,至第一次被pattern2匹配到的内容结束
4, LineNumber 制定行
5, StartLine, +N
从StartLine开始,向后N行
Command
d: 删除符合条件行,即delete
p: 显示符合条件行,一般于-n合用,即print意思
a \string:在制定行后面追加新行 \n \t都可以用,即append含义
i \string : 在制定行前面追加新行,内容为string, 即insert
r file : 将制定文件内容,添加至符合体哦啊见的行处,即read
w file: 将制定范围内的行,另存至制定文件中;即, write
s/pattern/string/修饰符 : 查找并替换,默认只替换第一次被匹配到的字符串
加修饰符:
g: 替换所有被匹配的字符串,即group
i: 忽略字符大小写
l..e : like ->liker
love -> lover
&: 引用模式匹配整个串
练习:
Question 1
#删除/etc/grub.conf文件中,行首空白符
sed s/^[[:space:]]*//g /etc/grub.conf
sed s/^ *//g grub.conf
Question2
#替换/etc/inittab文件中,"id:3:initdefault"一行中的数字为5
sed -n /id:5:initdefault:/p /etc/inittab
Question3
#删除/etc/inittab文件中的空白行
sed /^$/d /etc/inittab
Question4
#删除某文件开头部分的"#",但要求#后必须有空白字符才删除,否则不删除
sed s/^#// /etc/inittab
sed s/^# // inittab
sed s/^#[[:space:]]// inittab
sed s/^#[[:space:]]*// inittab
sed s/^[[:space:]]\+#// inittab
----------看马哥教学视频整理
上一篇: 缓存—— 数据缓存 快速缓存
下一篇: Java实现将PPT转为OFD过程详解