1.流编辑器sed:不需要与人进行交互,修改文件是重点
sed工作流程


因此,sed不可将退出状态作为执行成功与否判断的依据。

sed '' /etc/passwd  原封不动的逐行输出
sed 'd' passwd        读一行到模式空间就删除
sed '4,7d' passwd 删除文件4-7行, 没有真正修改文件
sed '4,7di' passwd    删除文件4-7行 ,真正修改文件!!
sed -r '5,$d' passwd 删除第5行到最后一行,其中d为选项
sed -r '/root/,5d' passwd  删除包含/root/行开始,一直到第5行,会反复的找/root/sed  --help|grep '\-r'
sed -ri     -i表示真改文件        -r表示支持扩展元字符

[root@localhost ~]# sed --help |grep '\-r'-r, --regexp-extended
sed -r 'p' /etc/passwd             p表示打印,读一行打印一行
sed -r -n 'p' /etc/passwd         -n表示静默的方式,单纯的执行p,所以n和p基本一起用
sed -r -n '/root/p' /etc/passwd       打印只有root的行查找和替换
sed -r 's/root/alice/' /etc/passwd        s表示search查找,查找所有行,读一行到模式空间,这么去做在/etc/passwd中查找root,把它替换为alice
sed -r 's/root/alice/g' /etc/passwd           g表示全局,一行所有的
sed -r 's/root/alice/gi' /etc/passwd      i表示忽略大小写查找
sed -r '/root/d' /etc/passwd      在模式空间删除带有root的行将路径进行查找和替换
u.txt的内容:
/etc/abc/456换成:/var/wangjised -r '/\/etc\/abc/\/var\/wangji\//' u.txt   sed -r '/ 路径1 / 路径2  /' u.txt,记得加上转义

sed '1,3d' passwd          删除1到3行
sed -r 's/root/wangji/g' /etc/passwd      将每行的root替换成wangjised -r '/^bin/,5d' passwd            找以bin开头,删到第5行
sed -r '/^bin/,+5d' passwd           从bin开始的行,再连删5行sed -r ‘/root/d’ passwd            将带有root的行删除
sed -r ‘/root/!d’ passwd            !代表取反,除了带有root的行都删除sed -r ‘1~2d’ passwd       从第一行开始,每间隔2行删除,即:删除所有奇数行

2/4/6/8/10行保留,1/3/5/7/9行删除

1/3/5/7/9行保留,2/4/6/8/10行删除

2/3/5/6/8/9行保留,1/4/7/10行删除

删除命令:d
sed -r '3d' datafile        删除第3行
sed -r '3{d}' datafile        删除第3行
sed -r '3{d;}' datafile        删除第3行
sed -r '3{h;d}'   passwd      {}表示有多个命令,对于每行,先暂存,再删除
sed -r '$d'   passwd      删除最后有一行
sed -r '3,$d' passwd      删除从第3行开始到最后有一行
sed -r '/north/d' datafile  删除满足正则的行
sed -r '/sout/d' datafile   删除满足正则的行替换命令:s
sed -r 's/west/north/g' datafile   查找west,替换为north,而且是全局的
sed -r 's/^west/north/g' datafile   查找west开头,替换为north,而且是全局的
sed -r 's/[0-9][0-9]$/&.5/' datafile
sed -r ‘1,5s/(.*)/#\1/’ passwd      ()不需要加\,因为有-r。将1-5行最前面加上#
sed -r 1,5s/^/#/
vi里面在第三行到第5行加#:    :3,5s/\(.*\)/#\1/sed -r 's/[0-9][0-9]$/&.5' passwd          &表示查找串中匹配到的内容,将两个数字结尾的后面加上.5读文件命令:r
sed -r '/Suan/r /etc/newfile' datafile        datafile文件读到带有Suan的行时,读入newfile
sed -r '2r /etc/newfile' datafile         datafile文件读到第2行时,读入/etc/newfile文件
sed -r '/2/r /etc/newfile' datafile       2 与 /2/  是两个不同的概念,/2/是正则,代表包含2的行。写文件命令:w
sed -r '/root/w /tmp/1.txt' datafile   datafile中凡是root行保存到/tmp/1.txt文件中
sed -r '3,$w /new.txt' datafile        datafile中的第3到最后一行保存到新文件中追加:a,i,替换命令:c
sed -r '/root/awwwwwwwww' passwd  passwd文件中,处理到root的行,在下一行追加一个wwwwwwwww
sed -r '2a111111111' passwd           passwd文件中,在第2行的下一行追加11111sed -r '/root/iwwwwwwwww' passwd  passwd文件中,处理到root的行,在上一行追加一个wwwwwwwww,即插入
sed -r '/root/cwwwwwwwww' passwd  passwd文件中,用wwwwwwwww替换root的行获取下一行命令:n:next
sed -r '/adm/{n;d}' passwd            删除匹配adm的那行的下一行,d可以换成s/sbin/wangji/,表示将这下一行的sbin换成wangji
所以,类似下下行
sed -r '/adm/{n;n;d}' passwd      passwd文件中找adm关键词,删除下下行
sed -r '/adm/{n;s/AM/Archive/}' passwd    替换下一行;passwd文件中查找的是adm关键词,但替换的是下一行。

3-5行,括起来的部分(.*\)前面添加#

:3,5s/.*/&YANG/    在第3-5行的后面加YANG,其中&表示匹配前面的内容。.*表示整行

  1 12 23 3YANG4 4YANG5 5YANG6 67 78 89 :wq10 sed -r'3d' datafile11 cat datafile12 :wq13
~

:%s/root/&YANG/    在root后面加上YANG

:%s/root/#&/    在root后面加上#

:%s/^root/#&/    在root后面加上#

:3,5s/^/#/    3-5行开始的地方加上#

sed -r 's/(.*)/#\1/' passwd 所有行前面加#

sed -r 's1,5/(.*)/#\1/' passwd 1-5行前面加#

sed -r '/root/s/(.*)/#\1/' passwd 带有/root/的行前面加#

sed -r '/root/s/(.*)/#\1/' passwd 所有行前面加#

sed -r '1,5s/(.*)/#&/' passwd 1-5行前面加#

sed -r '1,5s/^/#/' passwd 1-5行前面加#

sed -r 's/(.)(.)(.*)/\1YYY\2\3/' passwd

s/(.)(.)(.*)/   把每一行拆成三段,第一段第一个字符,第二段第2个字符,余下的为第三段。

\1  表示:替换为第1段保留

YYY\2:   表示第2个字符前面加YYY

\3  表示:第三段保留

sed -r 's/(.*)(.)/\1YYY\2/' passwd   

s/(.*)(.)/   把每一行拆成2段,第一段为从开始到倒数第2个字符,第二段最后一个字符

\1  表示:替换为第1段保留

YYY\2:   表示第2个段前面加YYY

最多只能9个小括号,即只能分9段。

4.sed的暂存空间

  • 模式空间->暂存空间:h和H
    小写是覆盖,大写是追加
  • 暂存空间->模式空间:g和G
    小写是覆盖,大写是追加
  • 暂存空间默认有换行符/回车

默认情况下,暂存空间里面是个换行符(空行)
sed -r 'g' file       处理第一行时,从暂存空间拿过来一个换行符,拿来覆盖,第二行类推,打印出来的都是空行
sed -r 'G' file       处理第一行时,从暂存空间拿过来一个换行符,拿来追加,这行下面会增加一个空行,第二行以此类推,即在每一行后面追加一个空行暂存和取用命令:h,H,g,G
sed -r '1h;$G' /etc/hosts     把/etc/hosts的第1行覆盖写到暂存空间(模式空间只有1行,暂存空间只有1行),
然后把暂存空间的内容追加到/etc/hosts的最后1行
(相当于把/etc/hosts的第1行复制到最后一行)第1行暂存到暂存空间,最后一行取出来sed -r '1{h;d};$G' /etc/hosts   把第1行覆盖写到暂存空间,并删除/etc/hosts的第1行,然后把暂存空间的内容追加到最后一行(相当于把/etc/hosts的第1行复制到最后一行,并删除第1行)
sed -r '1h;2,$g' /etc/hosts       把第1行放到暂存空间,然后将暂存空间的内容放到第2行至最后一行
sed -r '1h;2,3H;$G' /etc/hosts    把第1,2,3行放到模式空间,然后追加到 /etc/hosts文件的最后一行sed -r '4h;5x;6G' /etc/hosts    处理到第4行时,覆盖到暂存空间;处理到第5行时暂存空间里面的第4行与模式空间的第5行替换 反向选择:!
sed -r '3!d' /etc/hosts    除了第3行外都删除

54. 流编辑器sed技术概览相关推荐

  1. linux shell中的流编辑器sed的使用

    sed流编辑器 23.3.1  sed  strem editor 流编辑器 sed编辑器是一行一行的处理文件内容的.正在处理的内容存放在模式空间(缓冲区)内,处理完成后按照选项的规定进行输出或文件的 ...

  2. shell脚本编程笔记(九)—— 初识流编辑器 sed

    一. 流编辑器 sed编辑器被称作流编辑器(stream editor).在交互式文本编辑器中(比如vim),你可以用键盘命令来交互式地插入.删除或替换数据中的文本.流编辑器则基于预先提供的一组命令来 ...

  3. 详解流编辑器 sed 和 编程语言 awk

    一.流编辑器 sed sed 是一个精简的.非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名,然后在屏幕上查看输出. 逐行读取文件内容存储在临时缓冲区中,称为"模式空间" ...

  4. shell脚本学习笔记 (流编辑器sed)

    sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出.sed不 ...

  5. 流编辑器sed和gawk

    sed编辑器是一种流编辑器,区别于交互式vim编辑器,处理数据更快. 注意:sed编辑器并不会修改文本文件的数据.它只会将修改后的数据发送到STDOUT! sed 命令的格式如下:sed option ...

  6. Shell学习总结-流编辑器sed

    目录 正则表达式 定址 命令与选项 用sed修改文件 元字符 sed范例 106- 正则表达式 与grep一样,sed在文件中查找模式时也要使用正则表达式(RE)和各种元字符.正则表达式是括在斜杠间的 ...

  7. 文本处理三剑客之 sed 流编辑器(基础部分)

    文本处理三剑客之 sed 流编辑器(基础部分) SED 即 Stream EDitor.和交互式编辑器如 vi 需要打开整个文件不同,sed 是行编辑器,每次处理一行,比较适合在脚本中进行无交互编辑, ...

  8. SED单行脚本快速参考(Unix流编辑器)

    SED单行脚本快速参考(Unix流编辑器) « web2.0ã€äº'计ç®-ã€é›†ç¾¤ã€é«˜å¯ç"¨æ€§ SED单行脚本快速参考(Unix流编辑器) 2005年12月29 ...

  9. 文本处理三剑客之sed(流编辑器)

    文本处理三剑客之sed(流编辑器) - 行编辑器 把当前处理的行存储在临时缓冲区,称为模式空间,然后把模式空间的内容送往屏幕,一行一行的处理,主要用来编辑一个或者多个文件. - 用法 sed [opt ...

最新文章

  1. Java oracle 超出打开游标的最大数
  2. 【加密U盾】在LINX操作系统中部署KD电子钥匙
  3. leetcode刷题 60 61
  4. oracle的undo表空间不足,undo表空间不足,ORA-30036 unable to extend segment by ...
  5. 服务器端系统饼图,服务器 操作系统 饼图
  6. python对excel增删改查语句_利用python模拟sql语句对员工表格进行增删改查
  7. html5 session 缓存,关于HTML5中的sessionStorage的会话级缓存使用
  8. linux shell 多个命令一起执行的几种方法
  9. 学点PYTHON基础的东东--数据结构,算法,设计模式---访问者模式
  10. 常用股票软件linux,在 Linux 下看股票?
  11. 水经注万能地图下载器下载的瓦片如何应用到web端的cesium中
  12. Tomcat8.5下载安装配置
  13. OLED显示模块驱动原理及应用
  14. IDEA插件系列(105):IDEA Mind Map插件——IDEA思维导图
  15. iOS程序员为啥都爱用Mac电脑
  16. re.sub()用法的详细介绍
  17. Oracle:ORA-12505解决办法
  18. org.springframework.dao.InvalidDataAccessApiUsageException: ERR wrong number of arguments for ‘srem‘
  19. Android移动应用开发 多功能平台app
  20. 认认真真推荐几个一线IT大佬的公众号,值得收藏

热门文章

  1. 已经安装了 AccessDatabaseEngine.exe,还是报错
  2. 可以测试体育跑步的软件,让跑步更好玩 咕咚运动+软件测评
  3. Linux内存管理内存映射以及通过反汇编定位内存错误问题
  4. 第二次作业:支付宝案例分析
  5. 如何使用《背景音乐提取器》提取歌曲中的背景音乐
  6. 手机闪存速度排行_有关手机闪存类型的一些知识
  7. 华为手机大变?余承东被传离职转岗,进军美国受阻惹的祸?
  8. vue 快速入门、常用指令(1)
  9. Java编程基础二:java基本语法
  10. Markdown 插入图片技巧