Skip to content

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' fileawk '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' fileawk '/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>值' fileawk '$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 # 表示重启

感谢阅读,欢迎交流!