linux awk

awk是一门编程语言,被普遍适用于linux系统,主要用于简单脚本分析统计
今天咱们就小试牛刀,实操awk
awk编程是以行为单位处理文件,语法是'pattern { action }' 即:'模式 {动做}' 记住是单引号 双引号要转义 linux

前提:系统已经安装awk,而且存在一个demo.txt文件以便咱们实践,文件内容以下:
user1 10 男
user2 20 女
user3 18 女
user4 28 男
user5 90 男git

1、入门使用github

输出demo文件内容:
awk '{print $0}' demo.txt 

user1 10 男
user2 20 女
user3 18 女
user4 28 男
user5 90 男

1)全部的pattern action 都在单引号内
2)这里的{print $0} 为action pattern为空
3)awk会默认遍历每行内容进行匹配执行。$0为awk内置变量表明这行的全部内容。$1代码第一列 $2表明第二列依次类推
4)awk默认会以空格和制表符为分隔符来拆分每行内容。能够用参数-F执行分隔符,如-F#表明用#分割这行内容
5)也能够用linux管道方式如:cat demo.txt | awk '{print $0}'
6)awk内置不少经常使用变量,如NF(Number of Fileds),NR(Number of Records)等

2、pattern说明编程

输出男生信息
awk '/男/ {print $0}' demo.txt

user1 10 男
user4 28 男
user5 90 男

1)这里的 /男/ 就是pattern 能够使用正则匹配 //是开始结束符.

输出年龄大于20岁的信息
awk '$2>20 {print $0}' demo.txt

user4 28 男
user5 90 男

1)模式也能够用判断符号表示,如> < >= <= !=等等

输出后再首行打印表头 name age sex
awk 'BEGIN{print "name","age","sex"} {print $0}' demo.txt

name age sex
user1 10 男
user2 20 女
user3 18 女
user4 28 男
user5 90 男

1)awk默认有BEGIN和END两个模式符号,表明全部命令开始和结束执行
2)此处print逗号至关于分隔符空格

3、action说明编程语言

美化打印
1)awk支持printf格式化打印
awk '{printf("%s age is %d\n",$1,$2)}' demo.txt

user1 age is 10
user2 age is 20
user3 age is 18
user4 age is 28
user5 age is 90

支持编程语法if else while等
awk '{
 if ($3 == "男") printf("%s is a boy\n", $1)
 else printf("%s is a girl\n", $1)
}' demo.txt

4、 附加说明code

awk是一门编程语言,支持的内容远远不及此,更多语法请下载手册参考:
https://github.com/colasjun/awk