sed:过滤和转换的文本编辑器,主要是针对行的编辑,一次只能一行
用法:sed 【option】 {script} filename
参数:
-n:取消默认输出
-e:用于多重编辑
-i:用于改变替换的内容
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
s:是替换
g:是全部替换
p:打印输出
d:是删除指定,剩余输出
例子:使用seq或者echo输出一个1-30的文件
# seq 1 30 >sed.txt
# echo {1..30}|tr " " "\n">sed.txt
删除:
# sed ‘1d‘ sed.txt 删除第一行
# sed ‘$d‘ sed.txt 删除最后一行
# sed ‘1,5d‘ sed.txt 删除第一到第五行
显示:
# sed -n ‘1p‘ sed.txt 显示第一行
# sed -n ‘$p‘ sed.txt 显示最后一行
# sed -n ‘1,5p‘ sed.txt 显示第一到第五行
显示查找行:
# sed -n ‘/^2/p‘ sed.txt 以2开头的行
# sed -n ‘/2$/p‘ sed.txt 以2结尾的行
# sed -n ‘/2/p‘ sed.txt 包含2的行
替换:
# sed -i ‘s/2/1/g‘ sed.txt 将所有的2替换成1
# sed -i ‘10s/10/11/g‘ sed.txt 指定第10行替换
**使用sed取出网卡的IP地址
# ifconfig eth0|sed -n 2p|sed ‘s/^.*dr://g‘|sed ‘s/Bc.*$//g‘ 这里是先取前部分,再取后部分
# ifconfig eth0|sed -n 2p|sed -n ‘s#^.*dr:\(.*\)Bca.*$#\1#gp‘ 这里的括号必须转义
**使用find+sed替换所有的文件:
# find . -type f exec sed -i ‘s/2/1/g‘ {} \;
# find . -type f | xargs sed -i ‘s/2/1/g‘ ;
本文出自 “肖海” 博客,请务必保留此出处http://eveday.blog.51cto.com/10577430/1690216
原文地址:http://eveday.blog.51cto.com/10577430/1690216