文本三剑客——awk命令

awk命令(文本分析)

 

1.概述:

  • awk命令是一种编程语言,用于在linux/unix下对文本和数据进行处理;
  • 支持用户自定义函数和动态正则表达式等先进功能;
 

2.用法:

格式:awk [参数] [文件]
常用参数:
  • -F:指定输入时用到的字段分隔符,如分号;
  • -v:自定义变量
  • -f:从脚本中读取awk命令
1.以:号为分隔符,输出/etc/passwd的第1字段内容
[root@localhost ~]# awk -F: '{print $1}' /etc/passwd
[root@localhost ~]# awk -F: '{print $1"用户shell为:"$7}' /etc/passwd
$0:代表整行内容

2.匹配模式:关系表达式:条件为GID为996    动作:用户名称
[root@localhost ~]# awk -F: '$4==188 {print $1}' /etc/passwd

3.匹配模式:正则表达式:以test为开头的行  动作:输出用户名和组id  
[root@localhost ~]# awk -F: '/^test/{print $1,$4}' /etc/passwd

4.传递变量动作:输出用户名称和组ID  
[root@localhost ~]# awk -F: -va=3 '{print $1,$1+$a}' /etc/passwd

5.匹配模式:BEGIN和END语句  
[root@localhost ~]# awk -F: '{print "filename:"FILENAME",linenumber:"NR",columns:"NF",linecontent:"$0}' /etc/passwd
[root@localhost ~]# awk -F: 'BEGIN{print "-------------------------\n"}{printf "username:%-16s\tsuserid:%-16s\n",$1,$4}END{printf N "%-4s records\n",NR}' /etc/passwd
* 使用-F指定分隔符,-v传递变量参数,输出时有print和printf格式化输出,并且输出多列用,号分割,并且添加BEGIN和END字段。
* BEGIN语句块是awk分析处理前做的事情;END语句块是awk分析处理后做的事情

 

3.模式:

  • 正则表达式:使用通配符的一些扩展集;
  • 关系表达式:使用运算符进行操作,可以是字符串或者数据的比较测试;
  • 模式匹配表达式: ~:匹配运算符; ~!:不匹配运算符;
  • BEGIN语句块,pattern语句块,END语句块;

运算符:

  • 算数运算符:+、-、*、/
  • 赋值运算符:=、+=、......
  • 逻辑运算符:||、&&
  • 关系运算符:=、=、!=、>、<
  • 正则运算符:~、~!
 

4.动作:

组成:由一个或多个命令、函数表达组成;之间用逗号分隔开来,并位于大括号之内
主要部分:变量、数组赋值、输出命令、控制流语句、内置函数等等
 

(1)内置变量:

  • NR:已读(行数)的记录数
  • NF:浏览记录域(列数)的个数
  • ARGC:命令行参数个数
  • ARGV:命令行参数排序
  • FILENAME:awk浏览的文件名称
  • FNR:浏览文件的记录数
  • FS:设置输入域分隔符,等价于命令-F选项

(2)数组:

数组使用的语法格式:array_name[index]=value
删除数组:delete array_name[index]
多维数组:
 

(3)条件和循环语法:

if (condition) action
if (condition) action else action
for (initialisation; condition; increment/decrement) action
while (condition) action
* break:用以结束循环
* Continue:语句用于在循环体内部结束本次循环,从而直接进入下一次循环迭代
 

(4)内置函数:

  • 算数函数
  • 字符串函数
  • 时间函数
  • 位操作函数
  • 其它函数
参考: AWK内置函数
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值