Appearance
AWK 基本语法
awk '表达式' file
awk '表达式{print}' file
(默认awk就是print输出,所以可以省略print)
2内置变量
NR
:存储着文件中每行的行号$0
:表示整行的内容$n
:表示文件的第n列(awk默认按照空格或者tab键来分隔列数)NF
:存储最后一列的列号(即字段数)
行操作
- 取出文件的第n行:
awk 'NR==n' file
- 案例:
awk 'NR==3' pa.txt
取出文件的第3行
- 案例:
- 取出文件中大于/小于n的行:
awk 'NR>n' file
或awk 'NR<n' file
- 案例:
awk 'NR>7' pa.txt
取出文件中大于7的行
- 案例:
- 取出文件中不等于n的行:
awk 'NR!=n' file
- 案例:
awk 'NR!=1' pa.txt
取出文件中不等于1的行
- 案例:
- 取出文件中n1到n2之间的行(区间范围):
awk 'NR==n1,NR==n2' file
或awk '/n1/,/n2/' file
- 案例:
awk '/adm/,/sync/' pa.txt
过滤出adm到sync之间的行
- 案例:
字符串匹配
- 过滤包含特定字符串的行:
awk '/字符串/' file
- 案例:
awk '/root/' pa.txt
过滤包含root的行
- 案例:
- 过滤以特定字符开头的行:
awk '/^字符/' file
- 案例:
awk '/^a/' pa.txt
过滤以a开头的行
- 案例:
- 过滤以特定字符结尾的行:
awk '/字符$/' file
- 案例:
awk '/bash$/' pa.txt
过滤以bash结尾的行
- 案例:
列操作
- 取出文件中的第n列:
awk '{print $n}' file
- 案例:
awk '{print $1}' count.txt
取出文件中的第1列
- 案例:
- 取出文件中的最后一列:
awk '{print $NF}' file
- 案例:
awk '{print $NF}' count.txt
取出文件中的最后一列
- 案例:
- 取出文件中的倒数第二列:
awk '{print $(NF-1)}' file
- 格式化输出:可以结合字符串和列进行输出
- 案例:
awk -F: 'NR==1 || NR==5{print "用户名是: " $1 "\tUID 是: " $3}' p.txt
- 案例:
指定分隔符
- 使用
-F
选项指定分隔符- 语法:
awk -F '分隔符' '{print $n}' file
- 案例:
awk -F: '{print $1}' pa.txt
按:
分隔取出文件的第一列 - 可以指定多个分隔符,使用
|
表示或者- 案例:
awk -F ":|/" '{print NF}' aa.txt
指定:
或者/
为分隔符
- 案例:
- 语法:
- 分隔符可以是正则表达式,表示连续出现1次及以上
- 案例:
awk -F "[ :/]+" '{print NF}' aa.txt
:/
连续1次及以上作为分隔符
- 案例:
字符串比对和数值比较
- 字符串比对
- 案例:
awk -F: '$1=="root"' p.txt
取出第一列等于root的行 - 案例:
awk -F: '$1!="root"' p.txt
取出第一列不等于root的行
- 案例:
- 数值比较
- 语法:
awk '$n>值' file
或awk '$n<值' file
等 - 案例:
awk -F: '$3>0' p.txt
第三列大于0的行 - 案例:
awk '$2>90' test.txt
第二列大于90的行
- 语法:
综合应用
- 企业案例:统计分数大于90分的同学有几个?
awk '$2>90' test.txt | wc -l
- 统计小于60分的同学数量
awk '$2<60' test.txt | wc -l
注意事项
awk
中,使用空格或字符串都必须使用双引号awk
中默认将所有的字符串视为变量
linux运行级别
关机: shutdown init 0
重启: reboot init 6
Linux系统中有7个运行级别
每个运行级别表示不同的功能. 系统启动方式有7个. 类
似大马路的红绿灯 三种级别
0 # 表示关机
1 # 表示单用户,密码忘记了可以通过此模式找回修改
2 # 表示多用户,但是不支持服务 NFS网络文件系统
3 # 表示完全多用户. 系统默认的运行级别
4 # 表示待开发 未使用
5 # 表示桌面模式 ,企业服务器不安装
6 # 表示重启