Shell

shell awk基本使用

2021-12-06  本文已影响0人  不ji的石头

1.介绍:

基于模式匹配检查输入文本,逐行处理并且输出

通常用在shell脚本中获取指定的数据

单独使用时,可以对文本数据做统计

2.基础语法

格式1:命令 | awk [选项] '[条件]{指令(多个指令可以用;分割)}'

格式2:awk [选项] '[条件]{指令}' 文件

例如:awk '{print 1,3}' fileName //打印fileName的所有行的第1和第3列,因为没有条件所有扫描所有行

awk内置变量

FS //保存或者设置字段分隔符,例如FS=":", 与-F功能一样

$n //第n列,n为0时表示整行

NF //记录当前处理行的字段个数(列数)

NR //记录当前已经读入行的数量(行数)

过滤时机:BEGIN{} {} END{}

3.常用选项

-F //可以指定分隔符(分割列),默认的分隔符为空格和Tab键。-F: 分隔符为:

4.条件表达式:

正则表达式

还可以匹配列,例如:awk -F: '3!~/bash/{print 1,7}' file //匹配第3列不是bash结尾的行 (~为匹配 !~为不匹配)

数值/字符比较

== != > >= < <= && | //例如:awk 'NR==2' file //打印行号为2的

5. awk流程控制语法:awk '{if(条件){条件满足执行}else{}}' //if必须在{}内

例如:awk '{if{NR==3}{print NR}else{print "hello"}}'

6. awk for循环:

例如:awk 'BEGIN{for(i=1;i<5;i++) {print i}}'

7. awk数组的定义与使用

定义:数组名[下标]=元素值 //下标可以为字母什么的,有点像map

调用:数组名[下标]

遍历:for(变量名 in 数组名){print 数组名[变量]} //无序打印

上一篇下一篇

猜你喜欢

热点阅读