zoukankan      html  css  js  c++  java
  • sed awk

    脚本语言——shell+sed+awk和perl的区别
    2010-07-12 01:30
    http://hi.baidu.com/hyzshua1230/blog/item/4a18e63899c187cbd56225b5.html
    http://bbs.chinaunix.net/thread-702042-1-1.html

    如果是按行操作,就统统都用 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的组合。
  • 相关阅读:
    Sql server 备份还原后出现“受限制用户”问题
    jQuery的deferred对象详解
    SQLServer 自增主键创建, 指定自增主键列值插入数据,插入主键
    无法添加来自此网站的应用 扩展程序
    C#中dynamic的正确用法
    C#编程总结(十四)dynamic
    基于params,ref,out的参数问题详解
    SQLServer 数据库查看死锁、堵塞的SQL语句
    如何对web.config进行加密和解密
    自定义HttpModule的一些经验--配置篇
  • 原文地址:https://www.cnblogs.com/lexus/p/2257216.html
Copyright © 2011-2022 走看看