sed学习札记
sed使用起来,感觉跟awk也有点类似,也可以理解成匹配一个模式,然后执行相应的动作。但是这个模式可以是正则表达式匹配的模式,也可以是特定的某些行。但是匹配后可以执行的动作确实是sed的一大亮点,其几乎能完成一个文本编辑器所实现的功能。比如增加,删除等操作。其命令的字和vim的还是比较相似的。
d:用于删除
s:用于替换
选定行:例如‘1,5’ ‘/abc/,./fgh/’
e:执行多个命令,例如sed '-e s/a/A/g' -e 's/b/B/g'
r:从文件中读取内容,并增加到匹配的行后面
w:将所有匹配的内容,写入文件中
a\:追加文本到匹配的行的下一行
i\:插入文本到匹配的行的前一行
n:对匹配的文件的下一行进行操作,例如/match/{n;s/abc/def/g}
练习:
cat test_sed
1.把Steve的名字改成Jon
sed 's/Steve/Jon/g' test_sed
2.删除头三行
sed '1,3d' test_sed
3.显示5-10行
sed -n 1,5p test_sed
4.删除包含Lane的行.
sed -n /Lane/d test_sed
5.显示生日在November-December之间的行
sed -n '\#:1[12]/#p' test_sed
6.把三个星***添加到含Fred的行
sed -n '/Fred/ s/$/***/p' test_sed
7.用JOSE HAS RETIRED取代包含Jose的行
sed -n 's/Jose/JOSE HAS RETIRED/gp' test_sed
8.把Popeye的生日改1/14/46
sed -n '/Popeye/ s#[0-9]*/[0-9]*/[0-9]*#1/14/46#gp' test_sed
9.删除空白行
sed '/^$/d' test_sed
10.在20到30前加#号
sed '1,20 s/^/#&/g' test_sed