风情万种awk
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
最新文章
- php xml 文件读取 XMLReader
- [课程设计]Scrum 1.5 多鱼点餐系统开发进度
- Vim多行缩进技巧
- oracle中利用trigger,sequence自动生成ID
- LaTex 基础
- 招聘一个靠谱的ios
- java 邮箱验证公共方法
- How to log in to Amazon EC2 using PEM format from SecureCRT
- 《安卓网络编程》之第五篇 WebView的使用
- 一个有意思的Python小程序(全国省会名称随机出题)
- 【动态规划】洛谷P1004方格取数
- SVN简介与安装
- 文件传输协议FTP、SFTP和SCP
- lucas 模板 洛古模板题
- C语言学习第一天~Eclipse MinGW环境搭建
- Exp6 20155218 信息搜集与漏洞扫描
- 基于微信小程序的票价和时间选择以及计算总价
- Python开发一个多并发的FTP SERVER
- JSONArray().fromObject(); 出现org.apache.catalina.core.StandardWrapperValve invoke错误的解决办法
- PTA基础编程题目集6-3简单求和 (函数题)
热门文章
- java删除目录下符合条件的文件
- JAVA List集合转Page(分页对象)
- JS学习之函数的属性和方法
- bzoj 3196/ Tyvj 1730 二逼平衡树 (线段树套平衡树)
- kafka命令总结
- 如何查看由EF生成的SQL?
- 【BZOJ2693】jzptab [莫比乌斯反演]
- iOS-Apple苹果iPhone开发公开API
- 继承自UITableView的类自带tableView属性,不需要在创建该属性,因为父类UITableView已经创建.
- patch需要数据格式前端算法,patch算法基础,两个对象对比取差异属性