摘要: BEGIN 与 END 这两个特殊的“模式”,它们提供的 awk 程序起始(startup)与清除(cleanup)操作,常见于大型 awk 程序中,且通常写在个别文件里,而不是命令行上: BEGIN { 起始操作程序代码(startup code)} pattern1 { action1 } pa 阅读全文
posted @ 2019-01-23 10:06 Avention 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 如需从输入的数据文件中取出特定的文本行,主要的工具为 grep 程序。POSIX 采用三种不同 grep 变体:grep、egrep 与 fgrep 的功能,整合为单个版本,通过不同的选项,分别提供这三种行为模式。 虽然可以直接查找字符串常数,但是正则表达式能提供一个功能更强大的方式,描述你要找的文 阅读全文
posted @ 2019-01-23 10:06 Avention 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 在一些简单程序中,你可以使用 -F 选项修改字段分隔字符。显示 /etc/passwd 文件里的用户名称与全名,你可以使用: awk -F: '{ print $1,$5 }' /etc/passwd -F 选项会自动地设置 FS 变量。请注意,程序不必直接参照 FS 变量,也不用必须管理读取的记录 阅读全文
posted @ 2019-01-23 10:05 Avention 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 就像我们已经介绍过的:大多数时候,你只是想把选定的字段显示出来,或者重新安排其顺序。简单的打印可使用 print 语句做到,只要提供给它需要打印的字段列表,变量或字符串即可: awk -F: '{ print "User", $1 , "is really", $5}' /etc/passwd 简单 阅读全文
posted @ 2019-01-23 10:05 Avention 阅读(87) 评论(0) 推荐(0) 编辑
摘要: awk 的基本模式不同于绝大多数的程序语言。它其实比较类似于 sed: awk 'program' [ file ... ] awk 读取命令行上所指定的各个文件(若无,则为标准输入),一次读取一条记录(行)。再针对每一行,应用程序所指定的命令。awk 程序基本架构为: pattern { acti 阅读全文
posted @ 2019-01-23 10:04 Avention 阅读(104) 评论(0) 推荐(0) 编辑
摘要: awk 设计的重点就在字段与记录上:awk 读取输入记录(通常是一些行),然后自动将各个记录切分为字段。awk 将每条记录呃逆的字段数目,存储到内建变量 NF。 默认以空白分隔字段--例如空格与制表字符(或两者混用),像 join 那样。这通常就足够使用了,不过,其实还有其他选择:你可以将 FS 变 阅读全文
posted @ 2019-01-23 10:04 Avention 阅读(109) 评论(0) 推荐(0) 编辑
摘要: join 命令可以将多个文件结合在一起,每个文件里的每条记录,都共享一个键值(key),键值指的是记录中的主字段,通常会是用户名称、个人姓氏、员工编号之类的数据。举例来说,两个文件,一个列出所有业务员销售业绩,一个列出每个业务员应该实现的业绩: #业务员 量 joe 100 jane 200 her 阅读全文
posted @ 2019-01-23 10:03 Avention 阅读(344) 评论(0) 推荐(0) 编辑
摘要: awk 本身所提供的功能完备,已经是一个很好用的程序语言了。以后会好好地介绍该语言的精髓。虽然 awk 能做的事很多,但它主要的设计是要在 Shell脚本中发挥所长:做一些简单的文本处理,例如取出字段并重新编排这一类。接下来将介绍 awk 的基本概念,随后你看到这样的“单命令行程序(one-line 阅读全文
posted @ 2019-01-23 10:03 Avention 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 由于 UNIX 鼓励使用文本型数据,因此系统上最常见的数据存储类型就是文本了,在文本文件下,一行表示一条记录。这里要介绍的是在一行内用来分隔字段的两种惯例。首先是直接使用空白(whitespace),也就是用空格键(space)或制表(tab)键: #字符起始的行表示注释,可忽略(这是一般的习惯,注 阅读全文
posted @ 2019-01-23 10:02 Avention 阅读(184) 评论(0) 推荐(0) 编辑
摘要: cut 命令是用来剪下文本文件里的数据,文本文件可以是字段类型或是字符类型。后一种数据类型在遇到需要从文件里剪下特定的列时,特别方便。请注意:一个制表字符在此被视为单个字符。 举例来说,下面的命令可显示系统上每个用户的登录名及其全名: [root@avention etc]# cut -d : -f 阅读全文
posted @ 2019-01-23 10:02 Avention 阅读(286) 评论(0) 推荐(0) 编辑