简单输出
以下内容是一些经典的awk程序。
通常只会列出程序部分, 而不是整个命令行. 在任何情况下, 程序都可以用 引号包含起来放到 awk 命令的第一个参数中运行。 或者把它放到一个文件中使用 awk 的 -f 参数调用它。
在 awk 中仅仅只有两种数据类型: 数值 和 字符构成的字符串。
Awk 程序一次从输入文件的中读取一行内容并把它分割成一个个字段, 通常默认情况下:
一个字段是一个不包含任何空格或制表符的连续字符序列.
当前输入的行中的第一个字段被称做
$1
, 第二个是$2
, 以此类推。整个行的内容被定义为$0
。 每一行的字段数量可以不同。
通常, 我们要做的仅仅只是打印出每一行中的某些字段, 也许还要做一些计算。
打印每一行
如果一个动作没有任何模式, 这个动作会对所有输入的行进行操作. print 语句用来打印(输出)当前输入的行:
打印特定字段
使用一个 print 语句可以在同一行中输出不止一个字段:
在 print 语句中被逗号分割的表达式, 在默认情况下他们将会用一个空格分割来输出。
每一行 print 生成的内容都会以一个换行符作为结束。
但这些默认行为都可以自定义。
NF,字段数量
AWk会对当前输入的行有多少个字段进行计数, 并且将当前行的字段数量存 储在一个内建的称作 NF 的变量中。
计算和打印
对字段的值进行计算后再打印出来:
打印行号
Awk提供了另一个内建变量, 叫做 NR, 它会存储当前已经读取了多少行的计数。
在输出中添加内容
在字段中间或者计算的值中间打印输出想要的内容:
在打印语句中, 双引号内的文字将会在字段和计算的值中插入输出。
内建变量
变量
描述
$0
当前记录(这个变量中存放着整个行的内容)
$1~$n
当前记录的第n个字段,字段间由FS分隔
FS
输入字段分隔符 默认是空格或Tab (参数-F 也可用于指定分隔符,如-F:或-F '[:;]')
NF
当前记录中的字段个数,就是有多少列
NR
已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。
FNR
当前记录数,与NR不同的是,这个值会是各个文件自己的行号
RS
输入的记录分隔符, 默认为换行符
OFS
输出字段分隔符, 默认也是空格
ORS
输出的记录分隔符,默认为换行符
FILENAME
当前输入文件的名字
最后更新于
这有帮助吗?