开发培训大神shell脚本sed还是_第1页
开发培训大神shell脚本sed还是_第2页
开发培训大神shell脚本sed还是_第3页
开发培训大神shell脚本sed还是_第4页
开发培训大神shell脚本sed还是_第5页
已阅读5页,还剩5页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《SED单 快速参考》 awk实sed和awk都是Linux下常用的流编辑器,他们各有各的特色,本文并不是要做什么对比,而是权当好玩,把《SED单行快速参考》这文章,用awk做了一遍~至于孰好孰坏,那真是很难评论了。一般来说,sed令会更短小一些,同时也更难读懂;而awk稍微长点,但是if、while这样的,#sedawk##sedawk#sedawk#将第一个所产生的所有空行删除(即删除所有偶数行sedawk'{f=!f;if(f)print#在匹配式样“regex”sedawk'{if(/regex/)printf("\n%s\n",$0);elseprint#在匹配式样“regex”sedawk'{if(/regex/)printf("%s\n\n",$0);elseprint#在匹配式样“regex”sedawk'{if(/regex/)printf("\n%s\n\n",$0);elseprint# (tab,见本文末尾关于’’的用法的描述)sed=filename|sed'N;s/\n/\t/'awk'{i++;printf("%d\t%s\n",i,$0)}'#对文件中的所有行编号(行号在左,文字右端对齐)sed=filename|sed'N; /;s/*\(.\{6,\}\)\n/\1awk'{i++;printf("%6dsed'/./='filename|sed'/./N;s/\n/awk'{i++;if(!/^$/)printf("%d%s\n",i,$0);else计算行数(wcsed-nawk'{i++}END{print文本转换和替代:sed sed sed's/\x0D$//' ssed、gsed3.02.80,及更高版本awk'{sub(/\x0D$/,"");print$0}'sed"s/$/`echo-e\\\r`/"#在ksh下所使用令sed's/$'"/`echo\\\r`/"#在bash下所使用令sed"s/$/`echo\\\r`/" #在zsh下所使用令sed gsed3.02.80awksed sedn #下面的只对UnxUtilssed4.0.7及更高版本有效。要识别UnxUtils版本#sed可以通过其特有的“text”选项。你可以使用帮助选项(“help”)看其中有无一个“text”UnxUtilsDOS#版本的的sed则无法进行这一转换。但可以用“tr”来实现这一转换。sed"s/\r//infile UnxUtilssedv4.0.7trdr<infileoutfileGNUtr1.22#sed's/^ awk'{sub(/^[\t]+/,"");print#sed's/ awk'{sub(/[\t]+$/,"");print#sed's/^[\t]*//;s/[awk'{sub(/^[\t]+/,"");sub(/[\t]+$/,"");print#sed awk #79#78sed-e:a-e's/^.\{1,78\}$/awk791中,为了让文本居中每一行的前#2中,在居中文本的过程中只在文本的前面填充#空格,并且最终这些空格将有一半会被删除。此外每一行的后头并未填充空格。sede:a-e's/^.\{1,77\}$/&/;ta' sed-eae's/^.\{1,77\}$&/;tae's/\*\)\1/\1/'awk'{for(i=0;i<39-length($0)/2;i++)printf("");printf("%s\n",$0)}'#相当于上面的 sed sed sed sed's/\(.*\)foo\(.*foo\)/\1bar\2/sed awk'{gsub(/foo/,"bar");print 将每一行中的所有“foo” sedawk'{if(/baz/)gsub(/foo/,"bar");print sed#不管是“scarlet”“ruby”还是“puce”,一律换成sed's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'#对多数的sed都有效gsed's/scarlet\|ruby\|puce/red/g' #只对GNUsed有效awk'{gsub(/scarlet|ruby|puce/,"red");print$0}'#倒置所有行,第一行成为最后一行,依次类推(模拟“tac”)#sed sedn #将行中的字符逆序排列,第一个字成为最后一字,……(sed#将每两行连接成一行(sed'$!N;s/\n/awk'{f=!f;if(f)printf("%s",$0);elseprintf("#如果当前行以反斜杠\”#sed-e:a-e'/\\$/N;s/\\\n//;##sed-e:a-e'$!N;s/\n=//;ta'-eawk'{if(/^=/)printf("%s",substr($0,2));else gsed':a;s/\B[0-9]\{3\}\>/,&/;ta' GNUsedsed-e:a-e's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'#sed 的正则没有后向匹配和,搞的比较狼狈,呵呵#为带有小数点和负号的数值增加逗号分隔符(GNUgsed-r':a;s/(^|[^0-9.])([0-9]+)([0-#5(5,10,15,20,等行后增加一空白行gsed GNUsedsed awk'{print选择性地显示特定行:#10(模拟“head”的行为sedawk#(模拟“head1”命令sedawk#10行(sed-e:a-e#用awk干这个有点亏,得全文缓存,对于大文件肯显示文件中的最后2行(模拟“tail-2”命令sed#显示文件中的最后一行(模拟“tail-sed sedn awk'{A=$0}END{print#sede'$!{h;d;}e sede'1{$q;}e'$!{h;dexsede'1{$d;}e'$!{h;dexawk'{B=A;A=$0}END{print#只显示匹配正则表达式的行(sedn sed'/regexp/!d' awk'/regexp/{print}'#只显示“不”匹配正则表达式的行(模拟“grep-sed-n sed'/regexp/d' awk'!/regexp/{print}' sed-n'/regexp/{g;1!p;};h'awk'/regexp/{printA}{A=$0}' sed-nawk#显示包含“regexp”的行及其前后行,并在第一行之前加上“regexp”(类似“grep-A1-B1”)sed-n-e'/regexp/{=;x;1!p;g;$!N;p;D;}'-eawk'{if(F)print;F=0}/regexp/{printNR;print#显示包含“AAA”、“BBB”和“CCC”的行(任意次序sed'/AAA/!d/BBB/!d awk'{if(match($0,/AAA/)&&match($0,/BBB/)&&#显示包含“AAA”、“BBB”和“CCC”的行(固定次序sedawk#显示包含“AAA”“BBB”或“CCC”的行(sede/AAA/be/BBB/be'/CCC/be 多数gsed GNUsedawk'/AAA/{print;next}/BBB/{print;next}/CCC/{print}'awk'/AAA|BBB|CCC/{print}'#显示包含“AAA”(段落间以空行分隔#HHsedv1.5必须在“x;”后加入“G;”,接下来的3个都是这sed-e'/./{H;$!d;}'-e'x;/AAA/!d;'awk'BEGIN{RS=""}/AAA/{print}'awk-vRS=#显示包含“AAA”“BBB”和“CCC”三个字串的段落(任意次序sed-e'/./{H;$!d;}'-eawk-vRS='{if(match($0,/AAA/)&&match($0,/BBB/)&&#显示包含“AAA”、“BBB”、“CCC”(任意次序sed-e'/./{H;$!d;}'-e'x;/AAA/b'-e'/BBB/b'-e'/CCC/b'-edgsed'/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d' GNUsed有效awk-vRS='/AAA|BBB|CCC/{print"";print}'#sed-ncatll.txt awk'{if(length($0)>=65)print}'#65个以下字符的行sed-n sed'/^.\{65\}/d' awk'{if(length($0)<=65)print}'#显示部分文 sed-nawk#显示部分文 指定行号范围(从第8至第12行,含8和12行sedn sed awk'{if(NR>=8&4sedn sed sed 3awk#gsedn GNUsedsedn awk#显示两个正则表达式之间的文本(包含sedn awk选择性地删除特定行:#sedawk#删除文件中相邻的重复行(#sed'$!N;/^\(.*\)\n\1$/!P;awk#sedn'Gs/\n/&&//^\(~]*\n\).*\n\1/ds/\n//hP'#bones7456注:我这里awk'{if(!($0in#删除除重复行外的所有行(模拟“uniq-sed'$!N;s/^\(.*\)\n\1$/\1/;t;awk'{if($0==B&&#sedawk#sed 在过程中并不知道文件一共有几行,所以只能通篇缓存,大文件可能不适合,下面两个也一样#sed#sedeae'$d;N;2,10ba'e sedneae'1,10!{P;N;D;};N;ba'#8gsed GNUsedsed'n;n;n;n;n;n;n;d;' awk'{if(NR%8!=0)print}'|head#sed'/pattern/d' pattern的行当然pattern可以换成任何awk#删除文件中的所有空行(与“grep‘.’”效果相同sed sed awk##(模拟“cat-sed'/./,/^$/!d' sed'/^$/N;/\n$/D' #方法2,允许顶部保留一空行,尾部不留空行#sedawk#sedawk'{if(F||#sedeae'/^\n*$/{$d;N;baesedsed-e:a-e'/^\n*$/N;/\n$/ba' gsed3.02.*有效awk'/^.+$/{for(i=l;i<NR-1;i++)print"";print;l=NR}'#删除每个段落sed-n#很长,很ugly,应该有更好的办awk-vRS='{B=$0;l=0;f=1;while(match(B,/\n/)>0){printsubstr(B,l,RSTART-l-f);l=RSTART;sub(/\n/,"",B);f=0};print""}'#移除手册页(manpage)中的nroff标记。在UnixSystemV或bashs下#用’echo’命令时可能需要加上-esed"s/.`echo 外层的双括号是必须的(Unix环境sed bashtcsh中按Ctrl-V再按Ctrl-sed sed1.5,GNUsed,ssed所使用的十六awk#提取组或e-mail的邮件sed 删除第一行空行后的所有awk#提取组或e-mail的正文部sed 删除第一行空行之前的所有awk sed'/^Subject:*/!d;awk'/^Subject:.*/{print#从邮件头sed'/^Reply-To:/q;/^From:/h;awk'/^Reply-(见上一sed's/*(.*)//;s/>.*//;s/.*[:<]awk-F'[<>]+''{print#在每一行开头加上一个尖括号和空格(信息sed's/^/>awk'{print">"#将每一行开头处的尖括号和空格删除(解除sed's/^>awk'/^>/{print#移除大部分的HTML(包括跨行sed-e:a-e's/<[^>]*>//g;/</N;//ba'awk'{gsub(/<[^>]*>/,"",$0);print}'#文件必须以特定顺序传给sed。下面第一种版本的可以直接在命令行下输入;#第二种版本则可以放入一个带执行权限的s中。(由RahulDhesi的一#个修改而来。sed'/^end/,/^begin/d'file1file2...fileX|uudecod

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论