`

awk (转)

阅读更多

什么是awk?


awk是三个人名的缩写,他们是:Aho、(Peter)Weinberg和(Brain)Kernighan。

AWK的功能是什么?

与sed和grep很相似,awk是一种样式扫描与处理工具。它几乎可以完成grep和sed所能完成的全部工作,同时,它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。实际上,awk的确拥有自己的语言:awk程序设计语言,awk的三位创建者已将它正式定义为:样式扫描和处理语言。

为什么使用awk?

使用awk的第一个理由是基于文本的样式扫描和处理是我们经常做的工作,awk所做的工作有些象数据库,但与数据库不同的是,它处理的是文本文件,这些文件没有专门的存储格式,普通的人们就能编辑、阅读、理解和处理它们。而数据库文件往往具有特殊的存储格式,这使得它们必须用数据库处理程序来处理它们。既然这种类似于数据库的处理工作我们经常会遇到,我们就应当找到处理它们的简便易行的方法,UNIX有很多这方面的工具,例如sed 、grep、sort以及find等等,awk是其中十分优秀的一种。

使用awk的第二个理由是awk是一个简单的工具,当然这是相对于其强大的功能来说的。的确,UNIX有许多优秀的工具,例如UNIX天然的开发工具C语言及其延续C++就非常的优秀。但相对于它们来说,awk完成同样的功能要方便和简捷得多。这首先是因为awk提供了适应多种需要的解决方案:从解决简单问题的awk命令行到复杂而精巧的awk程序设计语言,这样做的好处是,你可以不必用复杂的方法去解决本来很简单的问题。例如,你可以用一个命令行解决简单的问题,而C不行,即使一个再简单的程序,C语言也必须经过编写、编译的全过程。其次,awk本身是解释执行的,这就使得awk程序不必经过编译的过程,同时,这也使得它与shell script程序能够很好的契合。最后,awk本身较C语言简单,虽然awk吸收了C语言很多优秀的成分,熟悉C语言会对学习awk有很大的帮助,但awk本身不须要会使用C语言——一种功能强大但需要大量时间学习才能掌握其技巧的开发工具。

使用awk的第三个理由是awk是一个容易获得的工具。与C和C++语言不同,awk只有一个文件(/bin/awk),而且几乎每个版本的UNIX都提供各自版本的awk,你完全不必费心去想如何获得awk。但C语言却不是这样,虽然C语言是UNIX天然的开发工具,但这个开发工具却是单独发行的,换言之,你必须为你的UNIX版本的C语言开发工具单独付费(当然使用D版者除外),获得并安装它,然后你才可以使用它。
基于以上理由,再加上awk强大的功能,我们有理由说,如果你要处理与文本样式扫描相关的工作,awk应该是你的第一选择。在这里有一个可遵循的一般原则:如果你用普通的shell工具或shell script有困难的话,试试awk,如果awk仍不能解决问题,则便用C语言,如果C语言仍然失败,则移至C++。

分享到:
评论

相关推荐

    三剑客之【awk】.html

    awk命令常用用法整理;加入了自己在平时运用中的实例,比如通过查询数据库生成csv文件或insert语句。将markdown文件转换成了html文件。 awk有许多强大的字符串函数 gsub(r,s) #在整个$0中,用s代替r gsub(r,s,t) 在...

    如何将 awk 脚本移植到 Python

    将一个 awk 脚本移植到 Python 主要在于代码风格而不是转译。 脚本是解决问题的有效方法,而 awk 是编写脚本的出色语言。它特别擅长于简单的文本处理,它可以带你完成配置文件的某些复杂重写或目录中文件名的重新...

    获取码流每帧大小 idx.awk

    利用estream的tools的save statistics保存每帧的起点和长度,文件格式为.csv; 使用idx.awk工具,./idx.awk aa.csv > aa.idx进行转换;

    JSON.awk:用AWK编写的实用JSON解析器

    JSON.awk 用awk编写的实用JSON解析器。介绍JSON.awk是一个独立的单文件程序,没有任何外部依赖关系。 它类似于 ,这是用Bash编写的JSON解析器-于2013-03-13检索以构成JSON.awk的基础。 从那时起,这些项目便分开了...

    批量pdg转换pdf_附示例(实践大师:UNIX+awk和sed编程篇.pdg

    绝对给力的转换器,值得收藏&拥有,转换速度也给力. --"好工具要分享,必须的." 备注: 收录了pdg2.dll扩展.

    gff2gtf:用于将 GFF 文件转换为 GTF 的 AWK 脚本

    用于将 GFF 文件转换为 GTF 的 AWK 脚本。 用法: awk -f gff2gtf.awk 文件.gff > 文件.gtf 适用于那些具有 AWK 解释器的操作系统。 该脚本依赖于记录的顺序。 规范不要求对 GFF 进行排序,但通常对记录进行排序...

    Python实现像awk一样分割字符串

    若你使用过 Shell 中的 awk 工具,会发现用它来分割字符串是非常方便的。特别是多个连续空格会被当做一个处理。 [root@localhost ~]# cat demo.txt hello world [root@localhost ~]# [root@localhost ~]# awk ...

    csv转换:将csv文件转换为更容易解析的格式(例如,awk)

    CSV-CONVERT(1)-通用命令手册姓名csv转换-将csv文件转换为更容易解析的格式概要csv转换描述csv-convert实用程序在其标准输入上获取一个“ csv”文件,并以一种可由awk(1)之类的工具更轻松地对其进行解析的方式...

    实战Shell脚本—sed,awk使用

    NULL 博文链接:https://ginge.iteye.com/blog/465063

    intellij-awk:[WiP] AWK缺少的IntelliJ IDEA语言支持插件

    目标v0.0.1 支持基本的AWK代码突出显示支持基本的AWK代码导航(转到声明,显示结构) 仅支持POSIX子集(又名BWK),不添加Gawk(可在以后添加)目标v0.0.2 显示内置功能的文档显示内置变量的文档( NR / NF / etc。...

    VASP-poscar2lammps.awk

    VASP-poscar2lammps.awk

    linux文本处理三剑客之 awk 命令(二)

    文章目录表达式统计input文件中的空白行平均值的计算系统变量格式化输出awk的ascii字符的转换awk的字符型字符的转换printf 修饰符的栗子内置字符串函数举个例子 表达式 统计input文件中的空白行 平均值的计算 ...

    小写数字转换大写金额

    小写数字转换大写金额,onkeyup事件触发js脚本

    利用perl、python、php、shell、sed、awk、c 实现字符串的翻转

    Q:有a.txt文件,里面内容如下 1234569 abcABCabc 要求使用awk打印出以下结果 987654321 cbaCBAcba A: shell :[root@vps tmp]# rev a.txt 9654321 cbaCBAcbaperl : [root@vps tmp]# perl -nle ‘print scalar ...

    pawk:PAWK-Python行处理器(例如AWK)

    PAWK-Python行处理器(例如AWK) PAWK旨在将Python的全部功能带到类似AWK的行处理中。 以下是一些简单的示例,显示了pawk相对于AWK的一些优点。 第一个示例将/etc/hosts转换为host到IP的JSON映射: cat /etc/...

    clawk:像Awk,但Clojure

    非零结果转到stdout。 优点: 我真的不知道awk。 我知道Clojure。 在Clojure中进行reader/line-seq/doseq/split/print舞蹈很繁琐。 如果碰巧每个文件都是Clojure数据结构的文件,awk和朋友将无济于事。 缺点: Awk...

    python xlsx转csv

    一般对于csv表格文件,在linux可以直接以文本形式打开,并用sed、awk等流编辑器进行格式化处理。但是,对于xls表格文件,需要安装软件包catdoc,之后可以用命令xls2csv将xls表格文件转换为csv文件,接着就可以处理了...

    example-cassandra-dsbulk-with-sed-and-awk

    例子卡桑德拉·散装与sed和awk 了解如何将与sed和awk结合使用以进行Cassandra数据操作。 在本演练中,我们将使用dsbulk从实例中卸载数据,使用awk和sed进行数据转换,然后将其加载到Dockerized Apache Cassandra...

    gawk官方手册

    AWK是一种优良的文本处理工具。它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首...

    轻量级的命令行JSON处理器:类似于JSON数据处理工具、awk、grep等 它用可移植的C语言编写,没有运行时依赖

    一个轻量级的、灵活的命令行JSON处理器,类似于JSON数据处理工具、awk、grep等。它用可移植的C语言编写,没有运行时依赖,允许您轻松地切片、过滤、映射和转换结构化数据。jq 是一个强大的工具,用于在命令行环境中...

Global site tag (gtag.js) - Google Analytics