awk是基于列的文本处理工具,所有的文件都是由单词和各种空白字符组成。这里"空白字符"包括空格、tab以及连续的空格和tab,每个非空白的部分叫做"域",从左到右依次是第一个域、第二个域,$1、$2分别用于表示域,$0则表示全部域

1.打印列
打印第一列和第四列
[root@localhost ~]# awk '{print $1,$4}' awk1
john.wang 021-11111111
lucy.yang 25021-22222222
jack.chen 021-33333333
lily.gong 021-44444444

打印全部列
[root@localhost ~]# awk '{print $0}' awk1
john.wang male 30 021-11111111
lucy.yang female 25 25021-22222222
jack.chen male 35 021-33333333
lily.gong female 20 021-44444444 ShangHai

-F指定分隔符,默认情况下是空白字符作为分隔符
以点作为分隔符
[root@localhost ~]# awk -F. '{print $1,$2}' awk1
john wang male 30 021-11111111
lucy yang female 25 25021-22222222
jack chen male 35 021-33333333
lily gong female 20 021-44444444 ShangHai

2.内部变量NF
上面的例子中,由于文件内容比较少,我们一眼就知道有多少行,每一行有多少列。但是如果遇到文件内容很多的,每一行数据的列都不一样,就需要通过特定的方式来获得文件的列数。

默认是以空白符分隔,查看每行有多少列
[root@localhost ~]# awk '{print NF}' awk1
4
4
4
5

指定分隔符,查看每行有多少列
[root@localhost ~]# awk -F. '{print NF}' awk1
2
2
2
2

3.打印固定列
打印最后一列,$NF是打印最后一列,这个是绝对的
[root@localhost ~]# awk '{print $NF}' awk1
021-11111111
25021-22222222
021-33333333
ShangHai

打印倒数第二列
[root@localhost ~]# awk '{print $(NF-1)}' awk1
30
25
35
021-44444444

4.截取字符串
可以适用substr()函数对指定域截取字符串,该函数的基本适用方法如下:
substr(指定列,第一个开始字符的位置,第二个结束的位置),第二个结束的位置可以为空,这样默认输出到该列的最后一个字符

打印awk1文件第一列的第六个字符到最后一个字符的内容:
[root@localhost ~]# awk '{print substr($1,6)}' awk1
wang
yang
chen
gong

5.确定字符串的长度
使用内部变量length可以确定字符串的长度,示例如下:
[root@localhost ~]# awk '{print length}' awk1
30
34
30
41

6.使用awk求列和
求年龄的和
[root@localhost ~]# awk 'BEGIN{total=0}{total+=$3}END{print total}' awk1
110

求平均年龄
[root@localhost ~]# awk 'BEGIN{total=0}{total+=$3}END{print total/NR}' awk1
27.5

最新文章

  1. php xml 文件读取 XMLReader
  2. [课程设计]Scrum 1.5 多鱼点餐系统开发进度
  3. Vim多行缩进技巧
  4. oracle中利用trigger,sequence自动生成ID
  5. LaTex 基础
  6. 招聘一个靠谱的ios
  7. java 邮箱验证公共方法
  8. How to log in to Amazon EC2 using PEM format from SecureCRT
  9. 《安卓网络编程》之第五篇 WebView的使用
  10. 一个有意思的Python小程序(全国省会名称随机出题)
  11. 【动态规划】洛谷P1004方格取数
  12. SVN简介与安装
  13. 文件传输协议FTP、SFTP和SCP
  14. lucas 模板 洛古模板题
  15. C语言学习第一天~Eclipse MinGW环境搭建
  16. Exp6 20155218 信息搜集与漏洞扫描
  17. 基于微信小程序的票价和时间选择以及计算总价
  18. Python开发一个多并发的FTP SERVER
  19. JSONArray().fromObject(); 出现org.apache.catalina.core.StandardWrapperValve invoke错误的解决办法
  20. PTA基础编程题目集6-3简单求和 (函数题)

热门文章

  1. java删除目录下符合条件的文件
  2. JAVA List集合转Page(分页对象)
  3. JS学习之函数的属性和方法
  4. bzoj 3196/ Tyvj 1730 二逼平衡树 (线段树套平衡树)
  5. kafka命令总结
  6. 如何查看由EF生成的SQL?
  7. 【BZOJ2693】jzptab [莫比乌斯反演]
  8. iOS-Apple苹果iPhone开发公开API
  9. 继承自UITableView的类自带tableView属性,不需要在创建该属性,因为父类UITableView已经创建.
  10. patch需要数据格式前端算法,patch算法基础,两个对象对比取差异属性