gawk

gawk基本使用

gawk options program file

  • gawk -F '{commond1;command2}'
  • gawk -F -f script_file text
    script_file:
{
  command1
  command2
}

gawk的内建变量

  • FIELDWIDTHS 空格分开,确切指定了每一个字段的宽度
  • FS 输入字段分隔符(-F)
  • RS 输入数据行分隔符
  • OFS 输出字段分隔符
  • ORS 输出行分隔符
  • FNR 当前数据文件数据行数量
  • NR 累计处理的数据行数量
  • NF 当年数据行中字段总数

默认RS和ORS都是换行符

自定义变量

  • var='test'
  • var=4

在命令行给变量赋值

gawk -f script n=2 text
变量n的取值就是2
如果要在BEGIN块让命令行赋值生效,需要加上-v参数,在-f script之前

数组

arr[index]=value
index可以是字符串,也可以是数字

遍历数组

for (var in array) { command }
var是index

删除元素

delete arr[index]

正则匹配

行匹配

  • gawk '/regex/{command}'

字段匹配

  • gaw '$x ~ /regex/{command}'
  • gaw '$x !~ /regex/{command}'

if

  • if (condition) command; else command
  • 多行if
if (condition) {
  command1
  command2
} else {
  command3
  command4
}

while

while (condition) {
  command...
}

do while

和C一样

for

和C一样

定义函数

function name([vars]) {
  statsments
}

最好放在BEGIN之前。

内建函数

数学和字符串两类,参考man page(Numeric Functions和String Functions)

你可能感兴趣的:(gawk)