[root@a ~]# awk 'END{print NR}' c.txt       #没错,这就是文件的行数,当然,这种统计方法不是linux下最快的,但也是一种思路
3
[root@a ~]# wc -l c.txt         #这种统计方法是linux下最快的
3 c.txt

[root@a ~]# head -3 /etc/passwd

root:a:0:0:root:/root:/bin/bash
bin:b:1:1:bin:/bin:/sbin/nologin
daemon:c:2:2:daemon:/sbin:/sbin/nologin

[root@a ~]# head -3 /etc/passwd | awk -F':' '{print $1}'

root
bin
daemon
[root@a ~]# head -3 /etc/passwd | awk -F':' '{print $2}'

a
b
c
[root@a ~]#head -3 /etc/passwd | awk -F':' '{print $1}{print $2}'    
root
a
bin
b
daemon
c

#有两个print,可以看到第二列放到了第一列之后换行显示

[root@a ~]# head -3 /etc/passwd | awk -F':' '{print $1,"\n",$2}'    

root 
a
bin 
b
daemon 
c

#在print中将$1和$2之间加一个\n,第二列前的空白字符也被输出了,两者还是有所区别

[root@a ~]# head -5 /etc/passwd | awk -F: '{if(NR>2&&NR<5)print NR,$0}'   
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin

#awk条件语句,打印整行信息并显示打印行号,if语句位置在{ }中间

awk -F':' '$1~/root/'  1.txt

root:x:0:0:root:/root:/bin/bash

111root222:x:0:0:root:/root:/sbin/nologin

awk -F':' '$1~/root/{OFS="#";print $1,$2,$3}'  1.txt

root#x#0

111root222#x#0

awk -F':' '$1=="root"{print$1,$2,$3}'  1.txt

root x 0

awk -F':' '$1=="root" || NR>=30{print $1,$2}' 1.txt

root x

rpc x

111

awk -F':' 'NF>3&&NR<3{print $1,$2,$3}' 1.txt

root x 0

111root222 x 0

~为模糊匹配,==表示精确匹配

awk -F:  '$3>=1000&&NF=="/bin/bash"{print $1,$NF}'  /etc/passwd

#打印系统中能够正常登陆的普通用户

echo “one tow three four” |awk '{print $(NF-2)}'

two

#awk支持四则运算

awk ‘{print $2+20 >> "b.txt"}’  a.txt

#可以通过awk命令将结果重定向输出到b.txt文件

[root@a ~]# awk -F':' 'NF>3&&NR>16{print NR,"\t",$3,$5}'  /etc/passwd

17   89 
18   74 Privilege-separated SSH

打印符合条件的内容并显示行号,awk模式支持关系表达式

awk -F':'  '$1~”root“{print $0}' 1.txt

#OFS用于输出时指定字段分隔符,后跟“;”接后续命令

awk -F':' '$1=="root"{print $1,$2}' 1.txt

awk -F':'  '$1=="root"||NR>=30{print $1,$2}' 1.txt

awk -F':'  'NF>3 &&NR<4{print $1,$2,$3}' 1.txt

#列数(NF)大于3列,行数(NR)小于4行

匹配

awk -F: '/root/{print}'  a.txt

awk -F: '/root/'  a.txt

awk -F: '/^root/'   a.txt

awk -F: '/bash$'  a.txt

其他语句

awk -F':' '{if($3<10){print "USER=>"$1}} a.txt

awk -F':'  '{printf "USERNAME:%-10s %15s\n",$1,$NF}' a.txt

实例:

1、过滤网卡的ip地址

注意:通过BEGIN{FS="[ :]+"}指定字段分隔符,其中BEGIN和END模块必需写在' '内部,如果是if条件表达式也必需写在' '中间,格式为'{if(条件){命令……}}‘

2、指定字段加20重定向到新的文件

awk通过变量查看文件行数

注意:a++等价于a=a+1,a++表示先赋值后加1。

最新文章

  1. spring Quartz 调度
  2. iOS开发——UI进阶篇(二)自定义等高cell,xib自定义等高的cell,Autolayout布局子控件,团购案例
  3. linux笔记七---------管道
  4. 【转】卸载VMware时提示“The MSI failed”解决方案
  5. protobuf 安装 及 小测试
  6. iOS应用崩溃日志分析
  7. poj - 2774 - Long Long Message
  8. C#使用FFmpeg 将视频格式转换成MP4示例
  9. jquery文本框内容实时监控
  10. springboot 错误求解决
  11. MySql在Mac上的安装与配置详解
  12. s6-7 TCP 传输策略
  13. dubbo源码之服务消费
  14. Safari 中加载 Flash 使用overflow失效的bug
  15. why deep learning works
  16. Ionic3 UI组件之 PhotoViewer
  17. APP案例分析-摩拜单车app
  18. excel省市区三级分类级联
  19. Vue性能优化之组件按需加载(以及一些常见的性能优化方法)
  20. (二十四)linux新定时器:timefd及相关操作函数

热门文章

  1. mysql数据库基础命令(一)
  2. js 学习四 对象应用 吃货游戏
  3. MySQL下载~安装教程~这里示例 MySQL 8.0 Command Line Client
  4. mysql5和mysql8连接数据库的配置
  5. 2019-11-29-Roslyn-使用-Directory.Build.props-文件定义编译
  6. docker 开启特权模式
  7. ansible 的file 模块
  8. puppet自动化安装服务
  9. squid之------安装与基本配置
  10. SpringMVC 使用Servlet原生API作为参数