您的位置:首页 > 运维架构 > Linux

linux-sed的基本用法

2015-12-22 16:43 309 查看
最近一段时间再自学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行首的空白字符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: