Linux awk详解

awk

awk '条件 {动作}' 文件名
# 示例
  $ awk '{print $0}' demo.txt  # 将demo.txt的每一行都原样输出
    print 打印
    $0  当前行

知识点1:'条件 动作’使用单引号,不能使用双引号
知识点2:$0表示当前行,$1,$2,$3,…,$i表示第1,2,3,i列


为了便于举例,使用/etc/passwd文件进行awk举例

root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

这个文件的字段分隔符是冒号,所以要用-F参数指定分隔符为冒号。然后,才能提取到它的第一个字段。

$ awk -F ':' '{ print $1 }' demo.txt
root
daemon
bin
sys
sync

知识点3:-F ‘分隔符’,用于指定列与列之间的分隔符


知识点4:awk常用的内建变量

内建变量含义
FILENAME当前输入文件的文件名,该变量是只读的
NR当前行的行号
NF当前行所拥有的列数,因此$NF就代表最后一个字段,$(NF-1)代表倒数第二个字段
OFS输出格式的列分隔符,缺省是空格
FS输入格式的列分隔符,缺省是空格和Tab
ORS输出格式的行分隔符,缺省是换行符
RS输入格式的行分隔符,缺省是换行符

打印第一列,最后一列,$ awk -F ‘:’ ‘{print $1, $(NF-1)}’ demo.txt,其中print命令里面的逗号,表示输出的时候,两部分之间使用空格分隔。

root /root
daemon /usr/sbin
bin /bin
sys /dev
sync /bin

知识点5:awk中的条件

awk -F ':'  'NR % 2 == 1 {print $1}' /etc/passwd # 只打印奇数行
awk -F ':'  '$3>100 && $3<200  {print $3}' /etc/passwd # 大于小于一个范围
awk -F ':'  '$3>100 {count=count+1}  END  {print count}' /etc/passwd  
awk -F ':' '{if ($1 > "m") print $1; else print "---"}' /etc/passwd # awk提供了if...else...结构
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值