更新至2012-12-6联系方式:1287789687@qq.com1.sedsedsedsed命令关键字sed命令sed命令讲正则表达式参数说明-s替换d删除p打印y对应着替换,长度必须相同-e表示可以指定多个指令,一个-e指定一个表达式如果表达式中含有单引号呢?那外面就用双引号sed-es/cs_release_policy='2Q'/cs_release_policy22/abc.txt或者sed-e's/cs_release_policy='\''2Q'\''/cs_release_policy22/'abc.txt转义字符是\,并且必须用单引号括起来。sed-e's/actual\s\+time[^\s]\+\s\+\(.*\)/\1/g'-e'/Total/d'$filenamesed-e's/actual\s\+time[^\s]\+\s\+\(.*\)/\1/g'-e's/cost[^\s]\+\s\+\(.*\)/\1/g'-e'/Total/d'column.txt注意:(1)+、?和(需要转义(2)[不需要转义范例1sed-i'/tomcat/raa.txt'install_linux32_all.txt将所有包含tomcat的行写入到文件aa.txt中。范例2:获取cfc/333中斜杠后面的三个数字,即333echo-ncfc/333|sed's/[a-z]\{3\}\/\([0-9]\{3\}\)/aaa\/\1/'aaa/333echo-ncfc/333|sed's/[a-z]\{3\}\/\([0-9]\{3\}\)/\1/'3331.1.1.获得路径的最里的文件夹名echo-n/home/whuang/javacode|sed-e's/^\/[a-z\/]\+\(javacode\)/\1/g'echo-n/home/whuang/javacode|sed-e's/^\/[a-zA-Z0-9\/]\+\(javacode\)/\1/g'echo[/home/whuang/javacode]|sed-e's/^\[[a-zA-Z0-9\/]\+\(javacode\)]/\1/g'echo/home/whuang/javacode|sed-e's/^\/[a-zA-Z0-9\/]\+\/\([^\/]\)/\1/g'更新至2012-12-6联系方式:1287789687@qq.com[/home/whuang/javacode|sed-e's/^\[[a-zA-Z0-9\/]\+\/\([^\/]\+\)$/\1/g'echo/home/whuang/javacode|sed-e's/^\/[a-zA-Z0-9\/]\+\/\([^\/]\+\)$/\1/g'echo[/home/whuang/javacode]|sed-e's/^\[[a-zA-Z0-9\/]\+\/\([^\/]\+\)]$/\1/g'echo[\\home\\whuang\\javacode]|sed-e's/^\[[a-zA-Z0-9\\]\+\\\([a-z]\+\)]$/\1/g'echo[\home\whuang\javacode]|sed-e's/^\[[a-zA-Z0-9\\]\+\\\([a-z]\+\)]$/\1/g'echo[//home//whuang//javacode]|sed-e's/^\[[a-zA-Z0-9\/]\+\/\([a-z]\+\)]$/\1/g'echoD:\kingbase\abc\bin|sed-e's/^[a-zA-Z0-9:\\]\+\\\([a-z]\+\)$/\1/g'echoD:\kingbase\abc\bin|sed-e's/^[a-zA-Z][:][a-zA-Z0-9\\]\+\\\([a-z]\+\)$/\1/g'1.1.1.获得路径的最外的文件夹名echoD:\kingbase\abc\bin|cut-b-2echo/home/whuang/javacode|sed-e's/^\/\([^\/]\+\)\/[a-zA-Z0-9\/]\+$/\1/g'1.1.2.将每行前面的数字删除aa.txt的内容1model2#fdsf23huangsujiesed's/^[0-9]\+\(.*\)/\1/'aa.txtsed's/^[0-9]\+[\t]\+\(.*\)/\1/'aa.txtsed-e's/^[0-9]\+\([^0-9]\+.*\)/\1/'aa.txt说明:[^0-9]表示非数字。范例8./include/python2.7/py_curses.h4./include/python2.7/graminit.h280./Uninstall87516.[user2@huangweiKingbase]$sed's#^[0-9]\+[\t]*\(.*\)#\1#'a.txt./include/python2.7/py_curses.h./include/python2.7/graminit.h./Uninstall.说明:\t表示Tab键。更新至2012-12-6联系方式:1287789687@qq.com1.1.1.将每行后面的数字删除sed-e's/\(.*[^0-9]\+\)[0-9]\+$/\1/'aa.txt说明:[^0-9]表示非数字。1.1.2.-e-e-e-e与-i-i-i-i并存的情况1.1.3.sedsedsedsed中有变量的情况正确echo/opt/KingbaseES/bin:/sf/sdfsd/fsdf|sed-es#$install_dir/bin##错误echo/opt/KingbaseES/bin:/sf/sdfsd/fsdf|sed-es#\$install_dir\/bin##echo/opt/KingbaseES/bin:/sf/sdfsd/fsdf|sed-es#$install_dir/bin##注意:sed中有变量时,不要使用单引号,而必须使用双引号。另外一种方法是借助:xargs:echo$KB_MAIN_VERSION_value|xargs-ised's/\$KB_MAIN_VERSION\$/{}{}{}{}/g'acc.txt$tmp_iap_xml说明:其中,{}{}{}{}是参数。范例01文件abc.txt的内容:ccc=$installer_dir$exportmyname=abcecho$myname|xargs-ised's/\$installer_dir\$/{}/g'abc.txt范例02文件abc.txt的内容:ccc=$installer_dir$exportmyname=abc/cecho$myname|xargs-ised's#\$installer_dir\$#{}#g'abc.txt范例03文件abc.txt的内容:ccc=$installer_dir$exportmyname=abc更新至2012-12-6联系方式:1287789687@qq.comseds/'\$installer_dir\$'/$myname/gabc.txt范例04文件abc.txt的内容:ccc=$installer_dir$seds/\\\$installer_dir\\\$/$myname/gabc.txt使用单引号也要转义$范例05文件kingbasees的内容:/opt/Kingbase/ES/V7fsdf[root@localhost~]#myname=/opt/Kingbase/ES/V7[root@localhost~]#echo$myname|sed-e's/\//\\\\\//g'|xargs-ised-e/{}/dkingbaseesfsdf范例06文件abc.txt的内容:ccc=$installer_dir$exportmyname=abc/[root@localhosttest]#echo$myname|sed-e's/\//\\\\\//g'|xargs-ised's/\$installer_dir\$/{}/g'abc.txtccc=abc/范例07echo$myname|xargs-ised's#\$installer_dir\$#{}#g'abc.txt更新至2012-12-6联系方式:1287789687@qq.com1.1.4.-n-n-n-n与-e-e-e-e并存的情况正确sed-e'/^$/d'-e'5,$p'-n-n-n-nccc.sh错误sed-e'/^$/d'-en'5,$p'ccc.sh1.1.5.删除指定行说明:d表示删除,默认是全局,即默认是加了gsed-n'5,$p'ccc.txt和sed'1,4d'ccc.txt可以达到相同的效果。删除passwd文件第三行,注意引号内的格式sed'3d'passwd|cat-n删除passwd文件第三至五行sed'3,5d'passwd|cat-nsed-e'/opt/'dkingbasees1.1.6.在每行前追加exportexportexportexport方式一:sed-e's/^\(.\+\)$/export\1/'aa.txtsed-e's/^\([^#].\+\)$/export\1/'aa.txt(对以#开头的行不进行处理,即过滤掉注释)[root@localhostsed_study]#sed-e's/^\([^#].\+\)$/export\1/'aa.txtexportmodel#fdsfexporthuangsujie更新至2012-12-6联系方式:1287789687@qq.com方式二:sed's/^/export/'aa.txt方式三:[root@localhosttest]#sed's/./export:export:export:export:&/'abc.txtexport:export:export:export:abcxxxexport:abcdddexport:abc222export:abc444export:abc555export:abc666export:abc777说明:其中的&表示匹配的内容。1.1.7.在每行前面添加递增数字aa.txt内容:model#fdsfhuangsujie预期结果:1model2#fdsf3huangsujieawk'{printNR$1}'aa.txt[root@localhostsed_study]#awk'$1!={printNR$1}'aa.txt1model3#fdsf4huangsujieawk'{if($1!=){printn+1$1;n++}elseprint$1}'aa.txt更新至2012-12-6联系方式:1287789687@qq.comawk'(n1){n=0;}{if($1!=){printn$1;n++}elseprint$1}'aa.txtawk'(n1){n=0;}{if($1!=){printn+1$1;n++}elseprint$1}'aa.txt1.1.8.在每行的前面加上相同的数字[root@localhosttest]#sed's/./2222&/'abc.txt2abcxxx2abcddd2abc2222abc4442abc5552abc6662abc777一、替换指定的行范例01:只替换第一行sed-e'1111s/333/444/g'cc.cc说明:1111表示替换第一行;s:表示替换范例02:替换1-2行sed-e'1,21,21,21,2s/333/444/g'cc.cc范例03:替换1到最后一行sed-e'1,$1,$1,$1,$s/333/444/g'cc.cc范例04:只替换最后一行sed-e'$$$$s/333/444/g'cc.cc范例05:只替换第二行sed-e'