1、awk原理
- 操作系统运行 awk 程序, 被运行的程序用单引号包围起来,awk程序就是模式-动作的组合方式进行组合的,这样会触发启动项。
- 模式主要是用于对文本的匹配 动作就是花括号里面的过滤条件
awk的报错查看
- ^ Syntax error 指向的是报错的位置,语法错误就出现在这个位置,我的系统是centos7 不同的系统版本,会有所不一样。
- awk 的错误,并会报告行号
- 由于发生了语法错误, awk 不会尝试执行这个程序. 然而有些错误直到运行时才会检测到.
打印每一行
如果一个动作没有模式, 对于每一个输入行, 该动作都会被执行. 语句 print 会打印每一个当前输
入行, 所以程序
{ print }
会将它所有的输入打印到标准输出. 因为 $0 表示一整行, 所以程序
{ print $0 }
完成同样的工作.
打印某些字段
- 逗号是 连续的意思 分号是终止的意思
NF, 字段的数量
- NF 是代表 字段数量
- $NF 是代表最后一个字段
NR 打印行号
- NR 是打印行号
- $NR 只是打印第一个字段
将文本放入输出中
[root@king awk]# awk '{ print "total pay for", $1, "is", $2 * $3 }' emp.data
total pay for Beth is 0
total pay for Dan is 0
total pay for Kathy is 40
total pay for Mark is 100
total pay for Mary is 121
total pay for Susie is 76.5
- 在 print 语句中, 被双引号包围的文本会和字段, 以及运算结果一起输出.
更加精美的输出
这个 printf 语句的格式字符串包含两个格式说明符. 第一个格式说明符 %s, 是说将第一个值 $1, 以字 8
符串的形式打印; 第二个格式说明符 %.2f, 是说将第二个值 $2*$3, 按照数值格式打印, 且带有两位小
数. 格式字符串的其他内容 (包括美元符) 按照字面值打印; 字符串末尾的 \n 表示换行符, 该符号使后面
的输出从下一行开始. 当 emp.data 作为输入时, 这个程序输出:
total pay for Beth is $0.00
total pay for Dan is $0.00
total pay for Kathy is $40.00
total pay for Mark is $100.00
total pay for Mary is $121.00
total pay for Susie is $76.50