当前位置:   article > 正文

SHELL-----sed关于 p、d、a、c、i 模式详解_sed p

sed p

Sed 行编辑器

1.sed(stream editor):

*    用来操作纯 ASCII 码的文本

*    Sed 一次处理一行内容处理时,把当前处理的行存储在临时缓冲区中,称之为“模式空间”(pattern space)

*    可以指定仅仅处理哪些行,Sed 符合模式条件的处理,不符合条件的不予处理

*     处理完成之后把缓冲区的内容送往屏幕

*     接着处理下一行,这样不断重复,直到文件末尾

 

2. sed命令格式;
sed [参数] ‘命令’ file

 

3.Sed 对字符的处理:

  1. p     显示,将某个选择的数据打印显示。通常 p 会与参数 sed -n 一起执行
  2. d     删除,显示模式空间删除指定行后的内容,不会对原文件数据删除
  3. a     添加,a 的后面可以接字符串,该字符串会在当前指定行的下一行出现
  4. c     更改, c 的后面可以接字符串,该字符串可以取代 n1,n2 之间的行
  5. i     插入, i 的后面可以接字符串,该字符串会在当前指定行的上一行出现

 

二.用法详解:

1) p:

  1. [root@server19 mnt]# cat -n /etc/fstab
  2. 1
  3. 2 #
  4. 3 # /etc/fstab
  5. 4 # Created by anaconda on Wed May 7 01:22:57 2014
  6. 5 #
  7. 6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
  8. 7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  9. 8 #
  10. 9 UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  11. [root@server19 mnt]# sed -n '/\:/p' /etc/fstab ##显示含有:的行(:需要转译)
  12. # Created by anaconda on Wed May 7 01:22:57 2014
  13. [root@server19 mnt]# sed -n '/^#/p' /etc/fstab ##显示以#开头的行
  14. #
  15. # /etc/fstab
  16. # Created by anaconda on Wed May 7 01:22:57 2014
  17. #
  18. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  19. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  20. #
  21. [root@server19 mnt]# sed -n '/^#/!p' /etc/fstab ##显示不以#开头的行(!)
  22. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  23. [root@server19 mnt]# sed -n '2,6p' /etc/fstab ##显示2-6
  24. #
  25. # /etc/fstab
  26. # Created by anaconda on Wed May 7 01:22:57 2014
  27. #
  28. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  29. [root@server19 mnt]# sed -n '2,6!p' /etc/fstab ##不显示2-6行的内容
  30. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  31. #
  32. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  33. [root@server19 mnt]# sed -n '2p;6p' /etc/fstab ##显示第2行和第6行【以分号为分隔符】
  34. #
  35. # Accessible filesystems, by reference, are maintained under '/dev/disk'

 

 

2)d:

  1. root@server19 mnt]# sed '/^UUID/d' /etc/fstab ##删除以UUID开头的行
  2. #
  3. # /etc/fstab
  4. # Created by anaconda on Wed May 7 01:22:57 2014
  5. #
  6. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  7. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  8. #
  9. [root@server19 mnt]# sed '/^#/d' /etc/fstab ##删除以#开头的行
  10. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  11. [root@server19 mnt]# sed '/^$/d' /etc/fstab ##删除空行
  12. #
  13. # /etc/fstab
  14. # Created by anaconda on Wed May 7 01:22:57 2014
  15. #
  16. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  17. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  18. #
  19. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  20. [root@server19 mnt]# sed '1,4d' /etc/fstab ##删除1-4
  21. #
  22. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  23. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  24. #
  25. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1

 

 

 

3)a:

 

  1. [root@server19 mnt]# cat hello.sh
  2. hello
  3. [root@server19 mnt]# sed '/hello/aworld' hello.sh
  4. hello
  5. world
  6. 全文替换:
  7. [root@server19 mnt]# sed 's/hello/hello world/g' hello.sh
  8. hello world
  9. 全文替换加上换行:
  10. [root@server19 mnt]# sed 's/hello/hello\nworld/g' hello.sh
  11. hello
  12. world

 

4)c:

  1. [root@server19 mnt]# sed '/hello/chello world' hello.sh
  2. hello world

 

 

 

5)i:

  1. [root@server19 mnt]# sed '/hello/iworld\nwestos' hello.sh
  2. world ##默认加在最上面
  3. westos
  4. hello

 

 

 

 

 

 

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/215288
推荐阅读
相关标签
  

闽ICP备14008679号