风情万种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
风情万种awk的更多相关文章
- awk命令简介
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- awk使用说明
原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...
- awk应用
h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...
- 3.awk数组详解及企业实战案例
awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...
- shell——awk
awk -F"分隔符" "command" filename awk -F":" '{print $1}' /etc/passwd 字段引用 ...
- 【Linux】AWK入门
什么是AWK AWK是一种用于处理文本的编程语言工具,一个模式匹配程序.一个典型的示例是将数据转换成格式化的报告. 在命令行输入如下awk命令: awk -F":" '{ prin ...
- 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od
awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上.并且可以使用管道, input | awk '' | output 1.首先要知道形式 awk 'command' fi ...
- sed awk grep三剑客常用
sed的常用用法: awk的常用用法: grep的常用用法: 除了列出符合行之外,并且列出后10行. grep -A 10 Exception kzfinance-front.log 除了列出符合行之 ...
- awk命令速查
awk与sed.grep一样都是为了加工数据流而做成的文本加工过滤器命令.awk会事先把输入的数据根据字段单位进行分割.在没有制定分割单位的情况下,以输入数据中的空格或Tab为分隔符.与sed相比,它 ...
随机推荐
- Android IntentService分析
IntentService其实是一个很通用的知识点,最近看了下阿里巴巴Android开发手册,再次记录下 阿里巴巴Android开发手册 [强制]避免在 BroadcastReceiver#onRec ...
- Kubernetes - Start containers using Kubectl
In this scenario, you'll learn how to use Kubectl to create and launch Deployments, Replication Cont ...
- hibernate 如何配置两个属性唯一
在单一字段的唯一性约束时,我们可以在映射文件里配置property属性的unique="true"来达到目的,但多字段的唯一性约束怎样处理呢?如 果使用复合主键可以很简单地解决这个 ...
- Android 百度定位SDKv4.2及6.0_百度定位实例_安卓定位实例
介绍 由于项目需要.前几天一直在研究百度定位的功能.通过不断的实践终于有结果了.不愿意独享 现在我把我的研究成果和大家分享一下.其实百度的 API 已经相当不错了 这之所以要写出来.一是自己做一个笔记 ...
- UVA 1635 Irrelevant Elements
https://vjudge.net/problem/UVA-1635 题意:n个数,每相邻两个求和,最后变成1个数,问这个数除m的余数与第几个数无关 n个数使用次数分别为C(n-1,i) i∈[0, ...
- JVM-内存回收算法--复制算法
复制算法,它将堆上的内存分为两个大小相等的区域,一个是空闲区域,一个是活动区域.在程序运行中,实际使用的是活动区域,也就是有50%的空间被浪费掉. 复制算法的实现过程:1.找出活动空间中所有存活的对象 ...
- [LA3135]node形式的优先队列
n个触发器,每个触发器每period秒就产生一个编号为qnum的事件,求前k个事件. n<=1000 k<=10000 node形式的优先队列 主要在于重载小于号,确定优先顺序. #in ...
- 【游记】NOIP 2017
时间:2017.11.11~2017.11.12 地点:广东省广州市第六中学 Day1 T1:看到题目,心想这种题目也能放在T1? 这个结论我之前遇到过至少3次,自己也简单证明过.初见是NOIP200 ...
- HDU 1114 Piggy-Bank (dp)
题目链接 Problem Description Before ACM can do anything, a budget must be prepared and the necessary fin ...
- bzoj 1058 bst
因为是数列的维护,所以我们可以考虑用splay来维护,每次在x插入的时候就在x+1前面插入就行了,然后用bst来维护两问的答案,但是应该会tle.我们来考虑这个问题的性质,首先因为这个数列没有删除操作 ...