awk命令运用
1.目标:
- 近期:使用awk 进行过滤,取列
- 长远:使用awk 进行过滤,取列,统计计算
- 第三个阶段:shell,python,awk判断,循环,数组中使用awk
2. awk内置命令
NR:Number of Record 记录号(行号)
NF:Number of Fields
3.awk 格式
awk 选项 '条件{动作}' 文件
awk 'BEGIN {commands} pattern {commands}END{commands}' file
awk -F : 'NR==1{print $1 ,$3}' chop
# BEGIN:处理数据前执行的命令
# END:处理数据后执行的命令
# pattern:模式,每一行都执行的命令
# BEGIN和END里的命令只是执行一次
# pattern里的命令会匹配每一行去处理
4. awk执行流程
1. BEGIN{}: 最开始执行
2. // : 正则
3. {} : 循环体
4. END{} : 最后执行
这里面最少有一个,最多有四个!
5.awk取行
1. 取出1.text的第一行
awk 'NR==1' 1.text
2. 取出1.text中包含root或mysql的行
awk '/root|mysql/' 1.text
3. 取1.text第3行到5行内容
awk 'NR>=3&&NR<=5' 1.text
4. 取1.text第3行到最后一行内容
awk 'NR>=3' 1.text
#同样,sed也可以完成此类相同的操作
sed -n '3,$p' 1.text
# $代表最后一行
6. awk取列
1. 取出ls -lh 命令的第1列到第3列内容
ls -lh | awk '{print $1,$3}
2. 取出1.text内容并加上行号
awk '{print NR,$0}' 1.text
# NR 表示行号
# $0 表示一整行内容
3. awk指定分隔符取出1.text第1列到第3列内容
awk -F ':' '{print $1,$3}' 1.text
# -F ':' 指定 : 分隔 支持正则
awk -F '[ /]' # 以空格和斜线分隔
awk -F '[ /]+' # +:匹配连续的空格为分隔符
7. awk 统计
awk '{i++}END{print i}' 1.text
此时于wc -l 命令功能相同
8.计算
awk 'BEGIN{print 1+1,2*2,5/3}'
# 可以用来计算小数
# BEGIN是读入文件前的操作,只执行一次,若不添加,则需用户手动输入任意内容即可输出
9.打印
awk 'BEGIN{for(i=0;i<=10;i++)print i}'
# 打印1~10
标签:BEGIN,END,入门,text,笔记,awk,Linux,print,NR
From: https://blog.csdn.net/2303_79714893/article/details/139457929