Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21730
  • 博文数量: 5
  • 博客积分: 133
  • 博客等级: 入伍新兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-07 15:26
文章分类

全部博文(5)

文章存档

2011年(5)

我的朋友

分类: LINUX

2011-06-07 13:07:31

如果是按行操作,就统统都用 sed;如果是不仅按行,还要按列操作,就统统都用 awk

比如文件
ab334cd-ccffafsdfbb006
bb00dg-xxxxxx80790
变成
cdab334-ccffafsdfb006b
dgbb00-xxxxx80790x
逻辑关系: -前的字符串由3 部分组成: 1字母2数字3字母,把它们重组为 312 三个部分
-后的字串中把结尾的数字串与它前面的一个字母对调
你用posix awk写个出来看看
上面这个例子说明:有的问题用 sed 很容易解决,但是用 awk 就比较费劲。

shell 下工具众多,功能也互相重复,最头疼的是,这些重复部分的语法还各不相同,比如 grep awk sed 都有正则表达式匹配的功能,但是三者的正则表达式语法就不相同,最最最头疼的是,每个工具还分 GNU 版和不是 GNU 版,之间的差别也很大,最最最最最头疼的是,即使都是 GNU 版,那么版本号的细微差别也会带来很多差别。
但是,用 Perl 做这些事,统统都能办到,而且统统都不太复杂。其实这也就是我学习 Perl 的原因。

awk对正则表达式支持的程度比sed要差些,例如sub/gsub中不能用\1, \2这样的向前引用。gsed中的gensub是可以的,但必须写成\\1, \\2。
perl应该说结合了sed/awk的优点,尤其是强大的正则表达式是我的最爱。^_^不过据说有的unix平台下缺省没有安装。

Perl 还有一点优势,那就是 Windows 下有完美的支持,而 sed 和 awk 因为 windows 讨厌的“双引号问题”,因此工作起来都不是很爽,不过写成脚本执行还是可以的。

sed/awk/grep 的好处在于,它们大多数都是单一文件的软件,因此在小系统上要比 Perl 好使,Perl 动辄数十M……

总结:
Perl安装文件比较大,默认系统中不一定有;sed、awk是单一文件,系统自带。
脚本处理中Perl功能最强,且可调试。它原始的目的就是用来取代UNIX原有的sed/awk 与shell script的组合。
阅读(1727) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

cinanine2011-07-24 15:20:25

^_^