博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
awk笔记
阅读量:4319 次
发布时间:2019-06-06

本文共 2607 字,大约阅读时间需要 8 分钟。

awk基本用法

基本用法:  awk [options] ‘program’ var=value file…  awk [options] -f programfile var=value file…  awk [options]  'BEGIN{ action;… } pattern{ action;… } END{ action;… }'  file ...  awk 程序通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块,共3部 分组成  program通常是被单引号或双引号中选项:  -F 指明输入时用到的字段分隔符  -v var=value: 自定义变量

 

awk语言

基本格式:awk [options] 'program' file… program:pattern{action statements;..} pattern和action: • pattern部分决定动作语句何时触发及触发事件  BEGIN,END • action statements对数据进行处理,放在{}内指明  print, printf 分割符、域和记录 • awk执行时,由分隔符分隔的字段(域)标记$1,$2..$n称为 域标识。$0为所有域,注意:和shell中变量$符含义不同 • 文件的每一行称为记录 • 省略action,则默认执行 print $0 的操作

 

awk工作原理

 第一步:执行BEGIN{action;… }语句块中的语句  第二步:从文件或标准输入(stdin)读取一行,然后执行 pattern{ action;… }语句块,它逐行扫描文件,从第一行到最后一 行重复这个过程,直到文件全部被读取完毕。   第三步:当读至输入流末尾时,执行END{action;…}语句块  BEGIN语句块在awk开始从输入流中读取行之前被执行,这是一个 可选的语句块,比如变量初始化、打印输出表格的表头等语句通常 可以写在BEGIN语句块中  END语句块在awk从输入流中读取完所有的行之后即被执行,比如 打印所有行的分析结果这类信息汇总都是在END语句块中完成,它 也是一个可选语句块   pattern语句块中的通用命令是最重要的部分,也是可选的。如果没 有提供pattern语句块,则默认执行{ print },即打印每一个读取到的 行,awk读取的每一行都会执行该语句块

awk变量

 变量:内置和自定义变量  FS:输入字段分隔符,默认为空白字符  awk -v FS=':'  '{print $1,FS,$3}’ /etc/passwd  awk  –F:   '{print $1,$3,$7}’ /etc/passwd  OFS:输出字段分隔符,默认为空白字符  awk  -v FS=‘:’  -v OFS=‘:’ '{print $1,$3,$7}’ /etc/passwd  RS:输入记录分隔符,指定输入时的换行符  awk -v RS=' ' ‘{print }’ /etc/passwd  ORS:输出记录分隔符,输出时用指定符号代替换行符  awk -v RS=' ' -v ORS='###'‘{print }’ /etc/passwd  NF:字段数量  awk  -F: ‘{print NF}’ /etc/fstab,引用内置变量不用$  awk  -F:  '{print $(NF-1)}'  /etc/passwd  NR:记录号      awk '{print NR}'  /etc/fstab ; awk END'{print NR}'  /etc/fstab
FNR:各文件分别计数,记录号  awk '{print FNR}'  /etc/fstab /etc/inittab FILENAME:当前文件名  awk '{print FILENAME}’  /etc/fstab ARGC:命令行参数的个数      awk '{print ARGC}’  /etc/fstab /etc/inittab      awk ‘BEGIN {print ARGC}’  /etc/fstab /etc/inittab ARGV:数组,保存的是命令行所给定的各参数      awk ‘BEGIN {print ARGV[0]}’  /etc/fstab /etc/inittab      awk ‘BEGIN {print ARGV[1]}’  /etc/fstab /etc/inittab

awk自定义变量

自定义变量(区分字符大小写)      (1) -v var=value        (2) 在program中直接定义     示例:      (1)awk -v test='hello gawk' '{print test}' /etc/fstab       (2)awk -v test='hello gawk' 'BEGIN{print test}'       (3)awk 'BEGIN{test="hello,gawk";print test}'       (4)awk –F:‘{sex=“male”;print $1,sex,age;age=18}’ /etc/passwd      (5)cat awkscript      (6){print script,$1,$2}      (7)awk -F: -f awkscript script=“awk” /etc/passwd

awk模式匹配

模式匹配符:           (1) ~:左边是否和右边匹配包含 !~:是否不匹配 示例:      (1)awk –F: '$0 ~ /root/{print $1}‘  /etc/passwd      (2)awk '$0~“^root"' /etc/passwd   awk  '$0  !~ /root/‘   /etc/passwd      (3)awk  –F: ‘$3==0’  /etc/passwd

  

转载于:https://www.cnblogs.com/harden13/p/8595067.html

你可能感兴趣的文章
浏览器性能测试网址
查看>>
[MTK FP]用Python把图片资源image.rar中为.pbm后缀的文件更改为.bmp后缀的方法
查看>>
实验二
查看>>
[LeetCode]203. Remove Linked List Elements 解题小结
查看>>
测试一下
查看>>
vue base64
查看>>
【Django实战开发】案例一:创建自己的blog站点-1.安装及搭建开发环境
查看>>
Pie(二分)
查看>>
Mysql 索引优化
查看>>
09湖州二模(自选模块不等式)
查看>>
Mybatis Batch 批量操作
查看>>
Ubuntu server搭建Java web服务器
查看>>
WSGI学习系列WSME
查看>>
java读取xml配置文件和properties配置文件
查看>>
HDU 4300 Contest 1
查看>>
POJ 3311
查看>>
Button MouseEvent颜色变化
查看>>
Volist标签
查看>>
浅谈模块化
查看>>
14个免费访客行为分析工具
查看>>