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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • awk vs gawk 除了VI这种交互式的文本编辑器(interactive text editor),Linu...
    ilaoke阅读 3,269评论 0 0
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,187评论 2 33
  • 恋爱时,爱就是卿卿我我,你是风儿,我是沙,缠缠绵绵到天涯…… 结婚后,爱就是柴米油盐酱醋茶,所有的浪漫都消磨在日子...
    酱子就是酱子阅读 1,722评论 0 0
  • 旧时雨m阅读 2,875评论 0 0
  • 最怕这样 凌晨醒来 感觉全世界就剩我一个
    FionaHoy阅读 819评论 0 0