Linux · 2008-12-07

学习_通用线程sed_笔记

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


root@debian:~/test# cat aaa.txt
112231234
#!/usr/bin
aaaaaaaaaa

bbbbbbbbb
hello
The World
cccccccc
dddddddddd
i i
j j j
Q QQQQQ
p p
eeeeeeeeee
ffffffffff
gggggggg



删除第一行 sed ‘1d’

root@debian:~/test# sed ‘1d’ aaa.txt
#!/usr/bin
aaaaaaaaaa

bbbbbbbbb
hello
The World
cccccccc
dddddddddd
i i
j j j
Q QQQQQ
p p
eeeeeeeeee
ffffffffff
gggggggg



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

root@debian:~/test# sed ‘1,5d’ aaa.txt
hello
The World
cccccccc
dddddddddd
i i
j j j
Q QQQQQ
p p
eeeeeeeeee
ffffffffff
gggggggg



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

root@debian:~/test# sed ‘/^#/d’ aaa.txt
112231234
aaaaaaaaaa

bbbbbbbbb
hello
The World
cccccccc
dddddddddd
i i
j j j
Q QQQQQ
p p
eeeeeeeeee
ffffffffff
gggggggg



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

root@debian:~/test# sed ‘/[abcdefg]/d’ aaa.txt
112231234

i i
j j j
Q QQQQQ
p p



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

root@debian:~/test# sed ‘/^[abc]/d’ aaa.txt
112231234
#!/usr/bin

hello
The World
dddddddddd
i i
j j j
Q QQQQQ
p p
eeeeeeeeee
ffffffffff
gggggggg



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

root@debian:~/test# sed ‘/^$/d’ aaa.txt
112231234
#!/usr/bin
aaaaaaaaaa
bbbbbbbbb
hello
The World
cccccccc
dddddddddd
i i
j j j
Q QQQQQ
p p
eeeeeeeeee
ffffffffff
gggggggg



来看看 -n是啥意思~

-n, –quiet, –silent

suppress automatic printing of pattern space





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




打印出”#” 开头的行

root@debian:~/test# sed ‘/^#/p’ aaa.txt
112231234
#!/usr/bin
#!/usr/bin
aaaaaaaaaa

bbbbbbbbb
hello
The World
cccccccc
dddddddddd
i i
j j j
Q QQQQQ
p p
eeeeeeeeee
ffffffffff
gggggggg

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

root@debian:~/test# sed -n ‘/^#/p’ aaa.txt
#!/usr/bin



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

root@debian:~/test# sed ‘/^1122/,\/bin$/d’ aaa.txt
aaaaaaaaaa

bbbbbbbbb
hello
The World
cccccccc
dddddddddd
i i
j j j
Q QQQQQ
p p
eeeeeeeeee
ffffffffff
gggggggg



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

root@debian:~/test# sed -n ‘/^g.*/p’ aaa.txt
gggggggg



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

root@debian:~/test# sed ‘/^1122/,/^p.*/d’ aaa.txt
eeeeeeeeee
ffffffffff
gggggggg



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