• 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的组合。
  • 相关阅读:
    数据结构实验之链表一:顺序建立链表
    数据结构实验之链表五:单链表的拆分
    最终排名
    选夫婿1
    数据结构实验之链表三:链表的逆置
    数据结构实验之链表二:逆序建立链表
    数据结构实验之链表四:有序链表的归并
    水题
    win32线程简单封装
    Boost 1.46.1,vc2005, 编译
  • 原文地址:https://www.cnblogs.com/lexus/p/2257216.html
Copyright © 2020-2023  润新知