shell脚本学习笔记之sed命令用法
sed基本用法
sed:stream editor
行编辑器
sed:模式空间 将匹配的文本内容储存到模式空间中
默认不编辑原文件,仅对模式空间中的数据做处理,而后,处理结束后,架构模式空间的内容显示
sed
-n
-i:直接修改原文件
-e script -e script:可以同时执行多个脚本
-f file
sed -f /scripts file
-r:表示使用扩展正则表达式
sed ‘adresscommand’ file。。。
-n:静默模式,不再默认显示模式空间中的内容,即只显示符合sed命令的内容
address
1.起始行,结束行
如1,100 表示1到100行
2./pattern/ 正则表达式
3./pattern1/,/pattern2/
第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行
4.LineNunber
指定的行
5.startine,+n
从startline开始,向后的n行:
command:
d:表示删除符合条件的行
’1,2d‘ 删除第一,二行
’/pattern/d' 删除含有pattern的行
'2,+2d' 删除第二以及后面的两行
p:显示符合条件的行
'/^\//p' 显示以/为行首的行
a \string:在指定的行后面追加新行,内容为'string'
如 '/^\//a \# hello world' 在以/行开头的行后面加#hello world
\n:可以用于换行
i \string: 在指定的行前面添加新行,内容为string
r file:将指定的文件内容添加至符合添加的行处
sed ‘2r /etc/issue' /etc/fstab 将文件issue 插入到fstab第二行后面
w file:将地址指定的范围内的行另存至指定的文件中
sed '/oot/w /tmp/oot.txt' /etc/fstab 将/etc/fstab中含有oot的行保存至文件oot.txt中
s/pattern/string:查找并替换,默认只替换每行中第一次被模式匹配到的字符串
sed 's/oot/OOT/' /etc/fstab 将fstab 文件中的oot替换为OOT
s/^\//#/'
加修饰符
g:全局替换
sed 's/oot\//#/g' /etc/fstab 将所有的/替换为#
i:忽略字符大小写
pattern/i,
s///:s###,s@@@
sed 's@/@#@g' /etc/fstab 用@将/替换为#
可以这样理解,首先将/=@,然后又将@=#,于是就等于将/=#
\(\),\1,\2
l..e
like--liker
love--lover
sed 's#l..e#&r#g' sed.txt
sed 's#\(l..e\)#\1r#g' sed.txt
like--Like
love--Love
sed 's#l\(..e\)#L\1#g' sed.txt
& 匹配模式运用到的整个
history | sed 's#^[[:space]]##g'
将数字前面的空格去为空