1 sed 又称为流编辑器,它逐行将文本文件中的行读取到模式空间中间去,将符合编辑条件的行进行编辑后输出到显示器上来。默认sed不编辑原文件只处理模式空间中的内容。

2 sed用法

sed [option]‘addresscommand[修饰符]‘ file

2.1 option

-n 采用静默模式,所谓静默模式就是只输出被匹配到的行,不在默认显示模式空间中内容

-i 直接修改原文件

-r 使用扩展的正则表达式

-e 同时连接多个 sed 命令

如sed -e ‘$a \this is end ‘ -ne ‘/\<if\>/p‘ /etc/rc.d/rc 此时就是同时使用了两个sed,

-f 其后接一个文件(文件中保存的内容全是 addresscommand )

2.2 address 搜索范围

1 指定单独某行 进行精确匹配

2 指定某行至某行 如 3,5 表达3-5行

3 3,+N 表示第三行后再接N行

4 /正则表达式/ 表示正则表达式中匹配到的行

5/正则表达式1/,/正则表达式2/ 表示第一次被正则表达式1匹配到的行和被正则表达式2匹配到的行之间的行。

2.3 command 编辑命令

d delete 删除

p printf 打印

a \string 在匹配到行的下面新建一行将string里面内容写入

i \string 在匹配到的行上门新建一行 并写入

r file 将file文件中的内容读取到匹配的行后面

w file 将匹配到的行内容写入文件file中

s /pattern/string/

s /// 1118.www.qixoo.qixoo.com这种表现形式外 还可以是@@@或者### 这中表现形式

\(\) \1 \2 也可以用到 反向引用,当引用是全局的时候 也可以直接用&来引用

2.4 修饰符

-g 全局匹配 表示每一行中所有符合条件的都替换

-i 忽略字符的大小写

练习部分:

1删除 /etc/grup.conf 中行首的空白符

sed s/^[[:space:]]// /etc/grub.conf

sed ‘1,$s/^[[:space:]]//‘ /etc/grub.conf 此处注意s后面没有空格直接接的/

2替换/etc/inittab 中“id=3” 中的数字为5

sed ‘s/id:3/id:5/‘ /etc/inittab

sed ‘$s/id:3/id:5/‘ /etc/inittab

sed ‘$s/^id:3/id:5/‘ /etc/inittab

3删除/etc/inittab 中的空白行

sed ‘/^#$/d‘ /etc/inittab

4删除/etc/inittab文件中开头的#号

sed ‘s/^#//‘ /etc/inittab

5取出一个文件路径中的目录名称

echo "/etc/rc.d/" | sed -r ‘s@^(/.*/)[^/]+/?@\

对上述问题进行分解处理

1 /etc/rc.d/ 搜索^/.*/ 的字符时默认的贪婪模式会搜索到整个字符串/etc/rc.d/

2 /etc/rc.d/ 搜索[^/]+ 默认搜索时的贪婪模式 会匹配一个单词(此处的单词是以字母和数字组成的字符集)etc ;此时若不加“+” 匹配到的是一个字符,[]表示匹配单个字符 [^/] 表示除/之外的单个字符。 [^/]+ 接^/.*/ 之后就表示rc.d 这个单词

当第一部分的贪婪模式和第二部分的都匹配到相同的字符时,第二部分的匹配内容是从后面的单词开始向前面的单词的方向进行匹配的,在反向引用时其就缩小匹配范围 此时紧紧只是匹配了/etc// 这个部分

3/? 在次与^/.*/匹配的范围重合 根据最小范围匹配原则,则最后反向引用匹配的结果为

/etc/

7统计/etc/init.d/functions文件中每个单词出现的次数并排序

sed -r ‘s/[^[:alpha:]]+/\n/g‘ /etc/init.d/functions | sort | uniq -c

linux学习基础6之sed用法详解的更多相关文章

  1. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)

    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...

  2. 《Java基础——break与continue用法详解》

    Java基础--break与continue用法详解       1. break语句: 规则: 1. 仅用于循环语句和switch语句当中,用于跳出循环. 2. 当只有一层循环时,则直接跳出循环,不 ...

  3. linux四剑客-grep/find/sed/awk/详解-技术流ken

    四剑客简介 相信接触过linux的大家应该都学过或者听过四剑客,即sed,grep,find,awk,有人对其望而生畏,有人对其爱不释手.参数太多,变化形式太多,使用超级灵活,让一部分人难以适从继而望 ...

  4. Linux学习之/etc/init.d/functions详解

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28773997&id=3996557 /etc/init.d/f ...

  5. sed用法详解

    转载自: SED单行脚本快速参考(Unix 流编辑器) 如侵犯您的版权,请联系:Windeal12@qq.com ------------------------------------------- ...

  6. 转载:Linux批量远程管理主机命令_pssh用法详解

    原文:http://www.linuxidc.com/Linux/2011-12/49635p2.htm (一) 使用前提 中心主机连接远程主机可以通过ssh密钥无密码连接 (二) 命令格式 pssh ...

  7. Dll学习(二)__declspec用法详解

    __declspec用于指定所给定类型的实例的与Microsoft相关的存储方式.其它的有关存储方式的修饰符如static与extern等是C和 C++语言的ANSI规范,而__declspec是一种 ...

  8. linux下的mount命令的用法详解

    挂接命令(mount) 首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的. 命令格式:mount [-t vfstype] [-o option ...

  9. 转:Linux中find命令-path -prune用法详解

    在Windows中可以在某些路径中查找文件,也可以设定不在某些路径中查找文件,下面用Linux中的find的命令结合其-path -prune参数来看看在Linux中怎么实现此功能. 假如在当前目录下 ...

随机推荐

  1. 深入理解OOP(三):多态和继承(动态绑定和运行时多态)

    在前面的文章中,我们介绍了编译期多态.params关键字.实例化.base关键字等.本节我们来关注另外一种多态:运行时多态, 运行时多态也叫迟绑定. 深入理解OOP(一):多态和继承(初期绑定和编译时 ...

  2. JavaScript学习笔记-new Date() 与 Date() 的区别

    var today1 = Date() //返回一个字符串(string),没有getDate等日期对象方法,内容为当前时间 var today2 = new Date() //返回一日期对象,内容为 ...

  3. C 语言学习的第 01 课:先来聊聊计算机吧

    各位同学,新学期,我就是你们的助教了.我的个人信息,你们的任课老师都已经介绍过了,所以我这里也就不再啰嗦.下面,来聊聊今天的话题:“先来谈谈计算机吧”. 想必看到这个题目,你们大家一定是不愿意点击进来 ...

  4. redis入门配置

    简介: Redis是Nosql中比较出名的,分布式数据库缓存,提升相应的速度,降低对数据库的访问! Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,(永久 ...

  5. Python 练习册

    01:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果 [图像处理] 类似于图中效果: py 2.7代码: from PIL import Image, Im ...

  6. Map集合的应用及其遍历方式

    ---> HashMap :底层基于哈希表      存储原理也使用哈希表来存放的:            往HashMap添加了元素 ,首先会调用键的hashCode方法 获得一个哈希值,然后 ...

  7. 怎样设置Word下次打开时跳转到上次阅读的位置

    ①我们启动Word2013,打开需要阅读的文档,当阅读完毕之后,在指定位置键入一个空格,然后按下Delete键删除,这样相当于是没有作任何更改. ②保存文档,单击文件--另存为,选择好路径,将文档保存 ...

  8. iOS开发小技巧--自定义带有占位文字的TextView(两种方式)

    自定义控件注意或框架注意:自己暴露在外面的属性,一定要重写setter,保证外界与内部的交互性 一.方案一:通过drawRect:方法将文字画到textView中,监听文字改变用的是通知中心(代理也可 ...

  9. MVC 基架不支持 Entity Framework 6 或更高版本

    MVC 基架不支持 Entity Framework 6 或更高版本.有关详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=276833. PS:新做一个 ...

  10. 【POJ 3062】Party(2-SAT、tarjan)

    2-SAT的入门题. a,a',b,b'分别表示两对夫妇,如果a,b有矛盾,那么a要来,就只能来b',b要来,就只能来a'.于是建了两条边(a,b'),(b,a'). 用tarjan强连通分量缩点染色 ...