文件处理利器 awk
原先只知道是一个命令,看《More Programming Pearls》才知道是一种编程语言,非常适合做文件处理,少量代码能做很多事情。书中就 awk 写了很多程序,而且很建议用它来做算法原型实现。
略略记忆点学过了会用的——
- pattern - action
BEGIN { action } END { action } 可用来定义初始化和结束时的操作。
普通的 pattern { action } 会对文件每一行做匹配,匹配成功则执行 action.
- 关联数组
像是简单一点的 map. 比如 words[$1]++ 就可以统计词频。
- 正则
pattern 可以是正则表达式,比如 pattern ~ /regex/.
~ 表示匹配,!~ 表示不匹配。
- 内置变量
$0 表示整行,$1 表示第一个字段,$2 表示第二个字段,以此类推。
NF 表示当前行的字段数。
NR 表示当前行号。
FILENAME 表示当前文件名。
FS 表示字段分隔符,默认是空格。
OFS 表示输出字段分隔符,默认是空格。
RS 表示记录分隔符,默认是换行符。