登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入   新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2025年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書

『簡體書』AWK程序设计语言(英文版·原书第2版)

書城自編碼: 4194964
分類:簡體書→大陸圖書→計算機/網絡程序設計
作者: [美]阿尔佛雷德·V. 阿霍,[美]布莱恩·W. 克尼汉,[
國際書號(ISBN): 9787111798972
出版社: 机械工业出版社
出版日期: 2026-01-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:HK$ 108.9

我要買

** 我創建的書架 **
未登入.



新書推薦:
耶鲁大学公开课 心理学导论
《 耶鲁大学公开课 心理学导论 》

售價:HK$ 72.6
三江源·可可西里野生动物图鉴(兽类卷)
《 三江源·可可西里野生动物图鉴(兽类卷) 》

售價:HK$ 140.8
存在与真理
《 存在与真理 》

售價:HK$ 85.8
免疫的奥秘:病毒、健康与人类命运
《 免疫的奥秘:病毒、健康与人类命运 》

售價:HK$ 86.9
变形金刚:绝境逢生(普通版)(全新漫画合订本第三册,简中版全球同步上市!完整收录能量块宇宙2024年
《 变形金刚:绝境逢生(普通版)(全新漫画合订本第三册,简中版全球同步上市!完整收录能量块宇宙2024年 》

售價:HK$ 74.8
成事铁律
《 成事铁律 》

售價:HK$ 61.6
大政府的国际起源:美国产业政策与制度变迁
《 大政府的国际起源:美国产业政策与制度变迁 》

售價:HK$ 96.8
何以浓香——当代中国泸型酒酿制技艺传播史料辑录
《 何以浓香——当代中国泸型酒酿制技艺传播史料辑录 》

售價:HK$ 181.5

編輯推薦:
这本由AWK语言创造者合力撰写的经典著作,历经40余年依然历久弥新。它跳出单纯的语法教学,以开创者视角深刻阐释AWK的设计哲学与演进,不仅教授语言用法,更传递底层逻辑与设计理念。通过循序渐进的知识体系和大量实战范例,帮助读者掌握将复杂问题拆解为数据处理清晰范式的高阶技能,锻造AI难以替代的核心竞争力,快速将AWK打造为个人效率工具链中的锐利一环。
內容簡介:
本书由AWK语言的创始人Alfred V. Aho、Brian W. Kernighan和Peter J. Weinberger编写,旨在向读者展示AWK的强大功能,并教会读者如何有效使用它。首先通过入门教程,让读者了解AWK的基本操作和语法,并能够编写简单的程序。接着通过多个章节展示AWK在个人计算、数据处理、报告生成、文本处理等多个领域的应用。书中包含丰富的实例,旨在帮助读者理解和掌握AWK的应用场景和编程技巧。最后,附录部分提供了AWK语言的详细参考手册,方便读者查阅。
關於作者:
阿尔佛雷德·V. 阿霍
(Alfred V. Aho)
哥伦比亚大学计算机科学系的荣休教授,前系主任。他在算法、数据结构、编程语言、编译器和计算机科学基础方面成就斐然,曾荣获ACM图灵奖和IEEE约翰·冯·诺依曼奖章。
布莱恩·W. 克尼汉
(Brian W. Kernighan)
曾就职于贝尔实验室计算机科学研究中心,现任普林斯顿大学计算机科学系教授。他参与打造了多个编程语言,并与人合著了多本著作,其中包括计算机领域的不朽经典《C程序设计语言》。
彼得·J. 温伯格
(Peter J. Weinberger)
目前就职于谷歌,曾担任Renaissance Technologies的 CTO以及贝尔实验室的计算机科学研究负责人。他是美国科学促进会 (AAAS)的 会士。
目錄
目录
前言
第1章 AWK教程1
1.1 入门1
1.2 简单输出4
1.3 格式化输出7
1.4 选择8
1.5 用AWK计算10
1.6 控制流语句14
1.7 数组16
1.8 实用的单行程序17
1.9 后续内容19
第2章 AWK实战20
2.1 个人计算工具20
2.2 选择22
2.3 转换24
2.4 汇总27
2.5 个人数据库28
2.6 个人函数库31
2.7 小结34
第3章 探索性数据分析35
3.1 泰坦尼克号的沉没35
3.2 啤酒评分41
3.3 数据分组43
3.4 Unicode 数据45
3.5 基本图形和图表47
3.6 小结49
第4章 数据处理51
4.1 数据转换与精简51
4.2 数据验证57
4.3 打包与解包60
4.4 多行记录60
4.5 小结67
第5章 报表与数据库68
5.1 生成报表68
5.2 查询和报表的封装74
5.3 关系数据库系统76
5.4 小结85
第6章 处理文本86
6.1 随机文本生成86
6.2 交互式文本处理92
6.3 文本处理95
6.4 制作索引101
6.5 小结106
第7章 小语言107
7.1 汇编器与解释器108
7.2 绘制图表的语言112
7.3 排序生成器114
7.4 逆波兰计算器117
7.5 一种不同的方法120
7.6 算术表达式的递归下降解析器121
7.7 AWK子集的递归下降解析器124
7.8 小结129
第8章 算法实验131
8.1 排序131
8.2 性能剖析144
8.3 拓扑排序147
8.4 make:文件更新程序152
8.5 小结156
第9章 尾声157
9.1 作为一种语言的AWK157
9.2 性能159
9.3 总结163
附录A AWK参考手册165
內容試閱
前 言
AWK诞生于1977年,是一款简单的编程语言,旨在轻松编写出能同时处理文本和数字的简短程序。作为一种脚本语言,它与UNIX的工具集相得益彰,并遵循UNIX“一个程序只做一件事并把它做好”的哲学,可以和其他程序无缝协作。
与1977年相比,当今的计算机世界已经发生了翻天覆地的变化。计算机的运行速度提高了数千倍,内存也增加了百万倍。软件领域同样日新月异,编程语言和计算环境层出不穷。互联网带来了来自世界各地的海量待处理数据。得益于Unicode,计算机不再局限于26个英文字母,而是能够处理全球各种语言的原生字符集。
尽管AWK已有近50年的历史,计算领域也已发生了巨变,但它仍然被广泛使用。作为UNIX的核心工具,它不仅预装在所有的UNIX、Linux和macOS系统中,甚至在Windows上也常发现它的身影。你不需要下载任何东西,也不需要导入任何库或包—开箱即用。它简单易学,你只需几分钟就能掌握它,并开始解决实际问题。
1977年,脚本语言尚属新生事物,而AWK是第一个被广泛采纳的脚本语言。后来的其他脚本语言,有的补充了AWK的功能,有的则在某些方面取而代之。1987年问世的Perl就是直接针对当时AWK的局限性设计的。比Perl晚4年的Python,是当今使用最广泛的脚本语言,对于大多数用户来说,当需要编写更大的程序时,Python是自然而然的进阶选择,特别是可以充分利用其生态系统中丰富的库资源。在Web和一些独立应用中,JavaScript是首选的脚本语言。其他更小众的语言在特定领域仍然非常有用,而“shell”本身也已衍生出多个版本,其编程能力得到显著增强。
程序员和计算机用户常常要花费大量时间来做一些简单、机械的数据处理工作—数据格式转换、有效性验证、特定属性项查找、数值计算、报表生成等。这些工作理应自动化,但如果每次都为此用C或Python这样的语言写一个专门的程序,未免过于烦琐。
AWK可以用很短的程序(通常只有一两行)来处理简单的计算。一个AWK程序就是一系列的模式(pattern)和动作(action),它指定了要在输入数据中寻找什么(模式),以及找到后该做什么(动作)。AWK会在一组文本文件(不包括Word文档、电子表格、PDF等非文本格式)中搜索匹配任一模式的行,当找到匹配的行时,就执行相应的动作。模式可以通过正则表达式组合和对字符串、数字、字段、变量及数组元素的比较操作来选择行。动作则可以对选定的行执行各种处理,其语法类似C语言,但不需要声明,并且内置了字符串和数字这两种数据类型。
AWK会自动扫描文本输入文件,并将每一行输入自动分割成字段。由于许多事情都已自动化(输入处理、字段分割、存储管理和初始化),因此AWK程序通常比传统语言编写的程序更加简洁。AWK常用于上述数据处理任务,用户可以在命令行中直接编写一两行程序,用完即弃。本质上,AWK是一种通用的可编程工具,能够取代众多专用的工具或程序。
AWK简洁的表达方式和便捷的操作,使它成为构建大型程序原型的利器。从几行代码开始,通过快速尝试不同的方案来逐步完善程序,直到它能完成预期的工作。因为程序很短,所以很容易上手,当你觉得需要改变方向时,也很容易从头再来。而且,一旦敲定了设计方案,要将AWK程序转换成另一种语言也比较简单。
本书的组织结构
本书旨在教会你什么是AWK以及如何有效地使用它。第1章是一个入门教程,教你如何上手,只需要阅读几页,你就能获得足够的信息并开始编写有用的程序。本章通过简单的示例展示了AWK在交互式应用中的典型用法。
本书的其余章节收录了各种各样的示例,旨在展示AWK的广泛适用性以及如何充分利用其各种功能。其中一些程序是我们日常使用的;另一些则只是为了阐明思路,并非为实际应用而设计的;还有一些纯粹是因为有趣而收录的。
第2章通过一些小程序展示了AWK的实际应用,这些程序源于我们自己的AWK编程实践。这些示例可能过于个性化,不一定能直接使用,但它们展示了一些实用技巧,并为可能的应用场景提供了思路。
第3章介绍了AWK在探索性数据分析中的应用:如何检查数据集的特征,如何识别潜在错误和实际错误,以及如何在使用其他工具进行深入分析之前全面了解数据内容。
第4章的重点是数据的检索、验证、转换和汇总—这些正是AWK最初设计时所针对的任务。此外,本章还讨论了如何处理像地址列表这样天然具有多行结构的数据。
AWK非常适合管理小型个人数据库。第5章讨论了如何从数据库中生成报告,并构建了一个简单的关系数据库系统和查询语言,用于处理存储在多个文件中的数据。
第6章介绍了文本生成程序和文档处理工具。其中包括一个索引程序实例,这个程序就是本书英文版电子书索引系统的基础。
第7章讲解了“小语言”,即针对特定领域的专用语言。由于AWK的基本操作能很好地支持翻译过程中遇到的词法分析和符号表处理等任务,因此特别适合开发小型语言处理器。本章包含一个汇编器、一个图表语言和多个计算器的实现示例。
AWK是表达某些算法的理想语言。由于无须声明变量,而且存储管理很容易,因此AWK程序具有伪代码的许多优点,但AWK程序可以运行,而伪代码则不能。第8章讨论了算法实验,包括测试和性能评估。本章展示了几种排序算法,并以一个UNIX make程序的实现作为综合案例。
第9章阐述了形成现今AWK特性的历史渊源,并提供了一些与其他语言的对比等性能测试数据。针对AWK运行速度慢或功能受限等情况,本章也给出了相应的解决方案。
附录A作为参考手册,系统地讲解了AWK语言。尽管附录A包含丰富的示例,但和大多数手册一样,内容较为冗长且略显枯燥,所以初次阅读时快速浏览即可。
建议先阅读第1章,并尝试自己编写一些简单的示例。之后就可以根据个人兴趣选择性地深入阅读其他章节。由于各章节之间基本独立,因此阅读顺序无关紧要。对于参考手册,建议先快速浏览以获得整体概览,重点关注总结和表格部分,但不要陷入细节而无法
自拨。
示例
本书的示例涵盖多个主题。其中最核心的是教授AWK的正确用法。我们精心挑选了多种实用的程序结构,并着重介绍了关联数组和正则表达式等AWK编程的特色功能。
第二个主题是展现AWK的多才多艺。AWK的应用领域极其广泛,涵盖数据库、电路设计、数值分析、图形处理、编译器和系统管理等多个方面。它既可以作为非程序员学习的第一门语言,也可以作为软件工程课程的实现语言。我们期望书中展示的丰富应用能帮读者打开新的思路。
第三个主题是展示常见的计算操作是如何实现的。书中包含多个实用示例:一个关系数据库系统、一个玩具计算机的汇编器和解释器、一种图表绘制语言、一个用于AWK子集的递归下降解析器、一个基于make的文件更新程序等。每个示例都是一个简短的AWK程序,用一种便于理解和实践的形式,展示了如何实现某些工作的精髓。
我们还试图阐明解决编程问题的各种思路。AWK为快速原型开发提供了良好支持。思路之一是分而治之策略:将一个大任务分解成多个小组件,每个小组件专注于解决问题的一个方面。思路之二是编写能创建其他程序的程序。小语言不仅定义了一个良好的用户界面,还能指导具体的实现。虽然这些思路是在AWK的背景下提出的,但其应用范围远不止于此,值得成为每个程序员技能库的一部分。
书中所有示例都经过了实际测试,源代码采用机器可读格式。这些程序经过精心设计以确保无误,但并未包含对所有无效输入的防护措施,这使我们能够专注于传达核心
概念。
AWK的演进历程
AWK源于一项实验,旨在扩展grep和sed这两个UNIX工具的功能,使其具备同时处理数字和文本的能力。它源自开发者对正则表达式和可编程编辑器的研究。这里需要说明一下,该语言的正式名称是AWK(全大写),取自作者姓氏的首字母,本书中采用AWK表示语言名称,awk表示程序名称。(用创造者姓氏首字母命名语言确实显得缺乏创意。不过说来也巧,当时我们三人的办公室恰好相邻,而且正是按照Aho、Weinberger、Kernighan的顺序排列的,这也是我们没有去取更好名字的原因。)
AWK最初是为了编写短小程序而设计的,但其独特的功能组合很快吸引了一些用户来开发更大规模的程序。为满足这些大型程序的需求,AWK于1985年推出了功能更为丰富的新版本。
从那时起,多个独立的AWK实现相继问世,包括Gawk(由Arnold Robbins维护和扩展)、Mawk(由Michael Brennan开发)、BusyboxAWK(由Dmitry Zakharov开发)以及Go版本(由Ben Hoyt开发)。这些版本在细节上与原始版本以及其他版本略有不同,但都保持了相同的语言核心特性。市面上还有其他关于AWK的书,特别是Arnold Robbins的Effective awk Programming详细介绍了Gawk的相关内容。此外,Gawk的在线手册也非常细致地涵盖了该版本的特性。
AWK的POSIX标准旨在完整而精确地定义该语言。然而,该标准并不是最新的,而且不同的实现也没有完全遵循它。
AWK在UNIX、Linux和macOS上是系统的标准安装程序,在Windows上可以通过WSL(Windows的Linux子系统)或像Cygwin这样的软件包来使用。你也可以从各种网站下载它的二进制或源代码版本。开发者版本的源代码位于 />多年以来,AWK的核心功能基本保持稳定。也许最重要的新特性是更好地支持了Unicode:新版本的AWK现在可以处理采用UTF-8编码的数据,这种标准Unicode编码可以表示任意语言中的字符。同时,新版本的AWK也增加了对CSV(逗号分隔值)格式的支持,可以处理Excel等程序生成的数据。使用命令
$ awk --version
可以查看当前运行的AWK版本。需要注意的是,系统默认安装的版本可能较旧,如果需要使用最新版本,建议自行下载并安装。
AWK最初在UNIX环境下开发,其部分功能体现了UNIX和Linux系统(含macOS)的特性,这些特性在我们的示例中有所体现。示例中还用到了sort等标准UNIX工具,其他平台可能没有完全对应的替代品。不过,除去这些平台特定的限制,AWK在各类环境中都能发挥其实用价值。
AWK并非完美无缺,它存在一些不规范之处,也有一些功能缺失以及设计上的不足。但作为一门语言,AWK功能丰富且用途广泛,适用于众多场景,学习起来也相对简单。我们相信它的价值会让你和我们一样受益。
致谢
在此,我们要感谢提供宝贵建议的朋友和同事们。特别要感谢ArnoldRobbins,多年来他为AWK的实现做出了重要贡献。在本版书稿的修订过程中,他不仅指出了错误,还针对AWK代码中不够清晰的解释和不当的编程风格提出建议,并对几版书稿的每一页几乎都提出了精辟见解。同样,JonBentley也一如既往地审读了多个版本的书稿并提出了改进建议。书中几个重要的示例都源自Jon的创意和实践。对他们的付出,我们深表谢意。
Ben Hoyt基于他用Go语言实现AWK的经验,对书稿提出了富有洞察力的意见。Nelson Beebe以一贯的超凡洞察力阅读了书稿,并重点关注了可移植性问题。我们还收到了Dick Sites和Ozan Yigit的宝贵建议。我们的编辑Greg Doench在本书通过Addison-Wesley出版的全过程中提供了极大帮助。同时也要感谢JulieNahil在制作环节的支持。
第1版致谢
本书得以完成,离不开众多朋友对书稿提出的宝贵意见和建议。在此,我们要特别感谢JonBentley,他多年来始终如一的热情给予了我们莫大鼓舞。Jon基于他使用和教授AWK的丰富经验,为本书贡献了大量想法和程序,并细致审阅多个版本的书稿。同时也要特别感谢Doug McIlroy,他独特的审阅视角为改进全书的结构和内容做出了重要贡献。此外,我们还要感谢以下对书稿提出了建设性意见的同仁:Susan Aho、Jaap Akkerhuis、Lorinda Cherry、Chris Fraser、Eric Grosse、Riccardo Gusella、Bob Herbst、Mark Kernighan、John Linderman、Bob Martin、Howard Moscovitz、Gerard Schmitt、Don Swartwout、Howard Trickey、Peter van Eijk、Chris Van Wyk和Mihalis Yannakakis。
Alfred V. Aho
Brian W. Kernighan
Peter J. Weinberger

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2026 (香港)大書城有限公司  All Rights Reserved.