Your SlideShare is downloading. ×
sed -- A programmer's perspective
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

sed -- A programmer's perspective

1,324
views

Published on

introduction of sed

introduction of sed

Published in: Technology

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,324
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. A Programmer’s Perspective李鼎(oldratlee<at>gmail<dot>com)
  • 2.  批处理(sed/awk) VS 交互性(vi)  快速大量地处理文件  可重复使用脚本  在脚本上可逐步改进 Plain Text(平文本) VS Binary(二进制格式)  Unix VS Windows :’) (etc/passwd vs 注册表)
  • 3.  更新多个POM文件中的工程版本 大量文件的重复操作(替换、转换等)
  • 4. 1. 预备知识(glob、正则表达式)2. sed * ▪ 执行流程 ▪ 语法 ▪ 实例3. 脚本编写实践4. 附录 & 相关资料
  • 5.  wild-card pattern(glob)  bash  find  --include option of grep Regular Expression  grep  sed  awk  vi http://en.wikipedia.org/wiki/Glob_(programming)
  • 6.  由ed引入,在grep、sed中可用 元字符 用途 . 任一字符。 # awk中可以匹配换行 * 匹配任意个(含零个)在它前面的字符 […] 字符类,第一个字符为脱字符^表示匹配 ^ 匹配行开始 $ 匹配行结尾 匹配前面字符指定的次数。 {m,n} {n}匹配n次,{n,}至少n次,{,n}至多m次 转义随后的特殊字符
  • 7.  由egrep引入,awk基本上与egrep相同 元字符 用途 + 匹配一个或多个在它前面的字符 ? 匹配零个或一个在它前面的字符 | 配置前面或后面的正则(替代方案) () 正则表达式分组 匹配前面字符指定的次数。 {m,n} {n}匹配n次,{m,}至少m次,{,n}至多m次
  • 8.  命令  p  d s 地址  行号 : 1 ,59, 200  正则表达式: /^foo[0-9]/
  • 9. 0 for(line : <Input File>) {1 process line by command list2 print pattern space3 clean pattern/hold space4 }NOTE: 2 print pattern space 这一步可以用sed –n选项关闭
  • 10.  p 打印 s 替换 d 删除 a 追加 i 插入 c 修改 = 打印行号 n 下一条 q 退出
  • 11.  格式  s/reg_from/reg_to/<option> Option  数字,如2 表示只替换第2个匹配  g,替换所有匹配,缺省只替换第一个匹配
  • 12.  替换元字符是()、(&)、(num) 在替换字符串中也用于包含(换行符) 1. s/●/ /2 #用换行符替换第2 个制表符 2. s/.Ah */ @A HEAD = / 3. s/$/ /
  • 13.  行号地址: 1 20 $ (最后一行) 正则地址: /regex/ 范围: (闭区间) /reg_start/,/reg_end/ 1,/reg_end/
  • 14.  简单命令: p 地址+命令:  1d  $s/good/bad/g  /from/to/s#dog#cat# 复合命令:  <地址>{ <命令行> }
  • 15.  1p $a/ <EOF> /^include/d 命令:p s d a i c = n y q P D N H h G g x : b t
  • 16. ① 词组搜索(词组可能跨两行)② 标签替换③ Velocity模板中get方法转成属性④ 练习一个: 去掉换行自动换行
  • 17. ① 使用分号: sed s/bad/good;s/dog/cat/ file② 使用多个e选项 sed -e ‘s/bad/good/ –e s/dog/cat/ file③ 使用的Bash的分行指令 sed -e s/bad/good s/dog/cat/ file
  • 18.  先在典型的测试数据上测运行,对比差异 然后在实际数据上运行 实用性 不用用脚本完成100%的工作,人肉辅助。
  • 19.  递归查看目录下的文件 –r  grep com.alibaba.dubbo --include=*.java -r . 只查看选定的文件:  --include=*.java --include=*.c --include=*.{c,php} 输出上下文行 -A -B -C –NUM 只显示匹配的文件 –l 彩色显示结果 --color=auto  别名以方便使用:alias grep=grep --color=auto 每行都马上flush --line-buffered  避免buffer引起的等待
  • 20.  替换递归目录下文件使用sed/awk: grep <pattern> -rl . | xargs sed -e <script>
  • 21. a) UnixUtils有Windows下的Port http://unxutils.sourceforge.net/b) GNU Win32 ports http://sourceforge.net/projects/gnuwin32/c) 使用cygWin http://www.cygwin.com/ 详见: 如何在Windows下使用GNU命令 http://www.oldratlee.com/297/tech/unix/use- unix-command-under-windows.html
  • 22.  在“!#”行只能有一个参数。 # (在Ubuntu、Redhat下我有测试过) 这行由*nix系统内核处理,而不是由shell处 理,因此不能有任何shell构件。 http://zh.wikipedia.org/wiki/Shebang http://en.wikipedia.org/wiki/Shebang_(Unix)
  • 23.  sed & awk 2nd Ed man page of ed, grep, sed, awk sed & awk Pocket Reference GNU sed的Manual,实现中有很多扩展 http://www.gnu.org/software/sed/manual/html_node/index.html