学习_通用线程sed_笔记

在IBM的”通用线程 — sed 实例“这文章里学了点sed的用法,IBM的文章真的全是精品!
通俗易懂,而且还配有实例,真是经典中的经典~趁着现在有空把学来的写进博客,以免忘记。本人记性不是一般的不好 – -! ~~

  1. root@debian:~/test# cat aaa.txt
  2. 112231234
  3. #!/usr/bin
  4. aaaaaaaaaa
  5.  
  6. bbbbbbbbb
  7. hello
  8. The World
  9. cccccccc
  10. dddddddddd
  11. i       i
  12. j  j  j
  13. Q  QQQQQ
  14. p p
  15. eeeeeeeeee
  16. ffffffffff
  17. gggggggg



删除第一行 sed ‘1d’

  1. root@debian:~/test# sed '1d' aaa.txt
  2. #!/usr/bin
  3. aaaaaaaaaa
  4.  
  5. bbbbbbbbb
  6. hello
  7. The World
  8. cccccccc
  9. dddddddddd
  10. i       i
  11. j  j  j
  12. Q  QQQQQ
  13. p p
  14. eeeeeeeeee
  15. ffffffffff
  16. gggggggg



删除1-5行 sed ‘1,5d’

  1. root@debian:~/test# sed '1,5d' aaa.txt
  2. hello
  3. The World
  4. cccccccc
  5. dddddddddd
  6. i       i
  7. j  j  j
  8. Q  QQQQQ
  9. p p
  10. eeeeeeeeee
  11. ffffffffff
  12. gggggggg



删除”#”开头的行 sed ‘/^#/d’

  1. root@debian:~/test# sed '/^#/d' aaa.txt
  2. 112231234
  3. aaaaaaaaaa
  4.  
  5. bbbbbbbbb
  6. hello
  7. The World
  8. cccccccc
  9. dddddddddd
  10. i       i
  11. j  j  j
  12. Q  QQQQQ
  13. p p
  14. eeeeeeeeee
  15. ffffffffff
  16. gggggggg



删除包含有abcdefg的行 sed ‘/[abcdefg]/d’

  1. root@debian:~/test# sed '/[abcdefg]/d' aaa.txt
  2. 112231234
  3.  
  4. i       i
  5. j  j  j
  6. Q  QQQQQ
  7. p p



删除abc为开头的行 sed ‘/^[abc]/d’

  1. root@debian:~/test# sed '/^[abc]/d' aaa.txt
  2. 112231234
  3. #!/usr/bin
  4.  
  5. hello
  6. The World
  7. dddddddddd
  8. i       i
  9. j  j  j
  10. Q  QQQQQ
  11. p p
  12. eeeeeeeeee
  13. ffffffffff
  14. gggggggg



删除空白行~ sed ‘/^$/d’

  1. root@debian:~/test# sed '/^$/d' aaa.txt
  2. 112231234
  3. #!/usr/bin
  4. aaaaaaaaaa
  5. bbbbbbbbb
  6. hello
  7. The World
  8. cccccccc
  9. dddddddddd
  10. i       i
  11. j  j  j
  12. Q  QQQQQ
  13. p p
  14. eeeeeeeeee
  15. ffffffffff
  16. gggggggg



来看看 -n是啥意思~

  1. -n, --quiet, --silent
  2.  
  3. suppress automatic printing of pattern space





这里很好记住的2个选项就是 “d” = 删除; “p” = 打印;




打印出”#” 开头的行

  1. root@debian:~/test# sed '/^#/p' aaa.txt
  2. 112231234
  3. #!/usr/bin
  4. #!/usr/bin
  5. aaaaaaaaaa
  6.  
  7. bbbbbbbbb
  8. hello
  9. The World
  10. cccccccc
  11. dddddddddd
  12. i       i
  13. j  j  j
  14. Q  QQQQQ
  15. p p
  16. eeeeeeeeee
  17. ffffffffff
  18. gggggggg

这样是错的 -_-!
还记得”-n”不
这样才是对的;

  1. root@debian:~/test# sed -n '/^#/p' aaa.txt
  2. #!/usr/bin



删除范围 sed ‘/开始/,/结束/d’
删除 ^1122为开头,”/bin” 为结尾的范围删除,因为要结束为 “/bin” 有个”/” 所以要”\”

  1. root@debian:~/test# sed '/^1122/,\/bin$/d' aaa.txt
  2. aaaaaaaaaa
  3.  
  4. bbbbbbbbb
  5. hello
  6. The World
  7. cccccccc
  8. dddddddddd
  9. i       i
  10. j  j  j
  11. Q  QQQQQ
  12. p p
  13. eeeeeeeeee
  14. ffffffffff
  15. gggggggg



打印必须至少有1个g,然后跟着都是gggg的,无论几个,打印出这行

  1. root@debian:~/test# sed -n '/^g.*/p' aaa.txt
  2. gggggggg



删除”1122″为开头,至少1个”p”或连着的”p”为结尾,删除当中这段范围。

  1. root@debian:~/test# sed '/^1122/,/^p.*/d' aaa.txt
  2. eeeeeeeeee
  3. ffffffffff
  4. gggggggg



其实这已经能算是sed的入门了,来跟大家分享这些心得,其实没什么难的,我也是什么都不会,刚刚好看到这么好的文章,嘎嘎~赚了!要相信自己,要有自信!我就是太没自信,认为自己什么都比别人差…
要相信自己,告诉自己,我不认输,我能行!
不知道大家注意到没有,有”-n”又有”d”又有”p”的,其实我是这么记的:
-n 上面说过了,实在记不住就理解为”no” !!! 不要的意思!!
当然 sed -n ‘/^$/p’ filename 不是说不要打印空行,是理解为 打印这些空行,而不删除 ^ ^!
-p 就是print啦 打印,我没查不知道对不对,反正记得住就可以了。
d 就是删除,delete.
把我文章开头写的aaa.txt的文本保存起来,自己练习一下,很快就能入门!!
明天继续学习第二部分~

7 Comments

  1. 不懂这东西。


    回复: 哦 哦 ~

  2. 不错的东西 先收藏下


    回复:嗯嗯,一起进步啦~