标签:sed的基本用法
最近一段时间再自学Linux,其实很想去培训结构但是迫于无奈,只好自学;将学的一些知识分享一下,欢迎大家吐糟。下面分享的是 sed的基本用法
一、sed命令行格式:
sed [-ndfri] ‘command‘ 输出文本/文本
二、常规选项:
-n:静默模式,不再默认显示模式空间里面的内容,只有sed特殊处理的那一行才会被列出来
-i:直接修改源文件,而不是显示在屏幕上
-f:指明sed脚本的文件名,直接将sed的动作卸载一个档案内,-f filename 则可以执行filename内sed动
作
-r:使用扩展正则表达式,默认是基础正则表达式
三、常规命令:
a:新增行,在指定的行后面追加新行(后一行)
c:取代,c的后面可以接字符串,这些字符串可以取代n1,n2之间的行
d:删除,删除符合条件的行,所以d后面不接任何内容
i:在指定的行前面添加新行(前一行)
p:打印,显示出符合条件的行在屏幕上
s:取代,可以直接进行替换的工作,通常情况下s和正则表达式一起使用,such 1,20s/old/new/g
格式:sed ‘s/要替换的字符串/新的字符串/g‘ (要替换的字符串可以用正则表达式)
四、定址
定址决定对那些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有地址,sed
将处理输入文件的所有行。
1、开始行,结束行;例如:1,100
2、/RegExp/ 例如:/^bash/
3、/pattern1/,/pattern2/(pattern:模式),第一次被pattern1匹配到的行开始,至第一次被
pattern2匹配到的行结束,这中间的所有行
4、LineNumber(行号):指定的行
5、StarLine,+N 从startLine开始,向后N行
五、实例
1、删除某行
sed ‘2,5d‘ datafile
删除第二到第五行
sed ‘MY‘,‘YOU‘ datafile
删除MY行到YOU行之间的内容
sed ‘MY,10d‘ datafile
删除包含“MY”的行到第十行的内容
sed ‘2,$d‘ datafile
删除第二行到最后一行
2、显示某行
sed -n ‘1p‘ datafile
显示第一行
sed -n ‘$p‘ datafile
显示最后一行
sed -n ‘1,4p‘ datafile
显示第一到第四行
3、模糊查询
sed -n ‘/hello/p‘ datafile
查询包括关键字hello所在所有行
sed -n‘/\$/p‘ datafile
查询包括关键字¥所在所有行,使用反斜线\屏蔽元字符
4、追加行
sed ‘1,3a leozhong‘ file
第一行到第三行后增加字符“leozhong”
sed ‘1aleozhong\n zhongqijian‘ file
第一行后增加多行,使用换行符\n
sed ‘/^\//a\#hello wold‘ leo(leo为当前目录)
在\后面添加新行
sed ‘/^\//a\#leoqijian‘ q(q当前目录)
在\后面添加新行
sed ‘2r /etc/passwd‘ leo
将 /etc/passwd里面的内容追加到leo文件的第二行后面
sed ‘$r/etc/passwd‘ leo
将 /etc/passwd里面的内容追加到leo文件的最后一行
5、替换行
sed ‘1c leo‘ leo文件leo中,用leo取代第一行的内容
sed ‘s/^\//#/g‘leo将leo文件中用#取代\
sed ‘s@/@#@#g‘ leo 同上还可以上使用其他字符 &除外 -g全局替换
6、向后引用
sed ‘s#l..e#@r#g‘ leo 替换
sed ‘s#\(l..e)#\1r#g‘ leo向后引用
7、删除字符(巧用替换)
sed ‘s#[[:space:]]##g‘ leo 删除leo文件中的空白字符
sed ‘s#[^[:space:]]*##g‘ leo 删除leo行首的空白字符
标签:sed的基本用法
原文地址:http://zhongqijian.blog.51cto.com/4662673/1727251