Sed Skills
测试的环境:
[[email protected] .ssh]$ uname -a
Linux gan 2.4.21-20.EL #1 SMP Wed Aug 18 20:34:58 EDT 2004 x86_64 x86_64 x86_64 GNU/Linux
[[email protected] .ssh]$ sed -V
GNU sed version 4.0.7
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
文章出处:http://gan.cublog.cn
1>. 删除普通字符操作
[[email protected] .ssh]$ cat dfile.txt
LINE1
LINE2
LINE3
LINE4
LINE5
LINE6
LINE7
删除指定行2
[[email protected] .ssh]$ sed ‘2d’ dfile.txt
LINE1
LINE3
LINE4
LINE5
LINE6
LINE7
http://gan.cublog.cn
删除1到5行数据
[[email protected] .ssh]$ sed ‘1,5d’ dfile.txt
LINE6
LINE7
删除除1到4行的所有行
[[email protected] .ssh]$ sed ‘1,4 !d’ dfile.txt
LINE1
LINE2
LINE3
LINE4
删除1行,3行数据
[[email protected] .ssh]$ sed -e ‘1d’ -e ‘3d’ dfile.txt
LINE2
LINE4
LINE5
LINE6
LINE7
删除最后一行数据
[[email protected] .ssh]$ sed ‘$d’ dfile.txt
LINE1
LINE2
LINE3
LINE4
LINE5
LINE6
http://gan.cublog.cn
删除3到最后一行
[[email protected] .ssh]$ sed ‘3,$d’ dfile.txt
LINE1
LINE2
删除包含4字符的行
[[email protected] .ssh]$ sed ‘/4/’d dfile.txt
LINE1
LINE2
LINE3
LINE5
LINE6
LINE7
[[email protected] .ssh]$ sed -e ‘/4/d’ dfile.txt
LINE1
LINE2
LINE3
LINE5
LINE6
LINE7
———————
[[email protected] .ssh]$ cat dfile.txt
LINE1
LINE2
LINE3http://gan.cublog.cn
LINE4
LINE5
LINE6
LINE7
ABC123
123XXABC
W00–
删除包含4,5字符的行
[[email protected] .ssh]$ sed ‘/4/,/5/’d dfile.txt #这种做法不建议使用,因为有时候会不行
LINE1
LINE2
LINE3
LINE6
LINE7
ABC123
123XXABC
W00–
[[email protected] .ssh]$ sed ‘/4/d;/5/d’ dfile.txt
LINE1
LINE2
LINE3
LINE6
LINE7
ABC123
123XXABC
W00–
http://gan.cublog.cn
删除开头字符为A和包含5字符的行
[[email protected] .ssh]$ sed -e “/^A/d;/5/d” dfile.txt
LINE1
LINE2
LINE3
LINE4
LINE6
LINE7
123XXABC
W00–
这样操作产生的结果不知道是什么,很奇怪的结果
[[email protected] .ssh]$ sed -e “/^A/,/5/d” dfile.txt
LINE1
LINE2
LINE3
LINE4
LINE5
LINE6
LINE7
删除空行(用上正侧表达式了)
[[email protected] .ssh]$ sed -e ‘/^$/d’ dfile.txt
2>. 特殊字符的删除
[[email protected] .ssh]$ cat sp.txt
A”/`!B\C’<>&%#@~()?{}|+_-=:;K 1
A/`!B\C’<>&%#@~()?{}|+-=:;K 2
A`!B\C’*<>&%#@~()?{}|+-=:;K 3
A!B\C’<>&%#@~()?{}|+_-=:;K 4
AB\C’<>&%#@~()?{}|+-=:;K 5
ABC’*<>&%#@~()?{}|+-=:;K 6
ABC*<>&%#@~()?{}|+-=:;K 7
ABC<>&%#@~()?{}|+-=:;K 8
ABC>&%#@~()?{}|+-=:;K 9
ABC&%#@~()?{}|+-=:;K 10
ABC%#@~()?{}|+-=:;K 11
ABC#@~()?{}|+-=:;K 12
[email protected]~()?{}|+-=:;K 13
ABC~()?{}|+-=:;K 14
ABC()?{}|+-=:;K 15
ABC)?{}|+-=:;K 16
ABC?{}|+-=:;K 17
ABC{}|+-=:;K 18
ABC}|+-=:;K 19
ABC|+-=:;K 20
ABC+-=:;K 21
ABC-=:;K 22
ABC-=:;K 23
ABC=:;K 24
ABC:;K 25
ABC;K 26
ABCK 27
[[email protected] .ssh]$ sed ‘/”/d’ sp.txt
A/`!B\C’*<>&%#@~()?{}|+_-=:;K 2
…… 其他的行省略不写了
[[email protected] .ssh]$ sed ‘/\//d’ sp.txt
A`!B\C’*<>&%#@~()?{}|+_-=:;K 3
…… 采用转义字符\
http://gan.cublog.cn
[[email protected] .ssh]$ sed ‘/`/d’ sp.txt
A!B\C’<>&%#@~()?{}|+_-=:;K 4
……
[[email protected] .ssh]$ sed ‘/!/d’ sp.txt
AB\C’<>&%#@~()?{}|+-=:;K 5
……
[[email protected] .ssh]$ sed ‘/\/d’ sp.txt
ABC’*<>&%#@~()?{}|+-=:;K 6
…… 采用转义字符\
[[email protected] .ssh]$ sed “/’/d” sp.txt
ABC<>&%#@~()?{}|+_-=:;K 7
…… 使用””符号
[[email protected] .ssh]$ sed ‘//d’ sp.txt
ABC<>&%#@~()?{}|+-=:;K 8
…… 后面的其他字符(<>&%#@~()?{}|+-=:;)同普通字符删除操作一样
对于sed在字符删除部分写的可能还不是很全面,慢慢添加吧。。。