Posted on 2008-03-28 10:02
王大头 阅读(125)
评论(0) 编辑 收藏 引用
买了好多催眠书,每天睡前看一看对睡眠很有帮助。^_^。。。
萝卜同学的《sed与awk》不错,一直对于sed超级晕,看过之后总算有些收获。
一天看了100页了,不少有用的东西。
一、grep原来是g/re/p的简写。
二、vi里面可以使用d/text删除从当前行到首次出现text标记的行。
三、sed多命令分隔使用分号;如sed 's/aaa/bbb/g;s/ccc/ddd/g' file。
四、sed对于pattern或者replacement值中包含/的命令,可以使用其它分隔符,如sed 's!/usr/bin!/usr/sbin!g' file。
五、sed,replacement如果包含特殊字符,需要使用转义,也可以支持换行,如sed 's/nl/\^J/g' file。
六、repalcement中可以包含pattern值,如sed -n 's/HAHA/lala & kaka/p' bb.txt,如输入为heihei HAHA,替换之后的值就为:heihei lala HAHA kaka。
七、sed,每个匹配部分可以使用\n(n表示数字)转移位置:如sed 's/\(.*\):\(.*\):\(.*\):\(.*\)/\3:\2:\1/',如果输入行为aaaa:bbbb:cccc:dddd,输出就是cccc:bbbb:aaaa;但是也存在一个问题,如果pattern格式和行格式不匹配,分隔符会匹配到最后一个分隔符,如sed 's/\(.*\):\(.*\)/\2:\1/',如果输入不变,输出就会变成:dddd:aaaa:bbbb:cccc;还有一个问题需要注意,如sed -n 's/\(aa\)\{2\}:\(bb\)\{2\}/\2:\1/p',如果输入不变,输出就会变成:bb:aa:cccc:dddd而不是:bbbb:aaaa:cccc:dddd(嘿嘿,后两点书上没有讲到)。
八、sed,中匹配序号可以指定,如sed 's/6/six/2',如果输入为:1 2 3 4 5 6 6 7 8,输出就是:1 2 3 4 5 6 six 7 8。
九、sed,模式匹配次数\{m,n\},特例*=\{0,\};?=\{0,1\};+=\{1,\}。
十、grep中多字符匹配,如查找包含unix或者linux的行,egrep "(u)|(li)nix" 或者egrep "unix|linux"都可以,之前只知道第二种情况。
十一、grep也支持匹配次数,如查找123-1234类似的三个数字-四个数字的字符串就可以写成grep "[0-9]\{3\}-[0-9]\{4\}"或者grep "[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"都可以实现,之前只知道第二种情况。