文档章节

linux awk命令

w
 waterme
发布于 2016/07/09 23:28
字数 770
阅读 1
收藏 0
点赞 0
评论 0

简介

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。

awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

awk {patten+action} file

查看/etc/passwd的内容

#cat /etc/passwd -n

root@safecode:~# cat /etc/passwd -n
     1  root:x:0:0:root:/root:/bin/bash
     2  daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
     3  bin:x:2:2:bin:/bin:/usr/sbin/nologin
     4  sys:x:3:3:sys:/dev:/usr/sbin/nologin
     5  sync:x:4:65534:sync:/bin:/bin/sync

显示每行的第一个字符和最后一个字符中间以TAB键分割

#cat /etc/passwd | awk -F ':'  '{print $1"\t"$7}'

root /bin/bash

daemon /bin/bash

……

awk是一行一行的读取数据,-F ':'即已:号对每一行的数据进行分割,分割后$1代表从左到右第一个字符,$2代表第二个字符,$3代表第三个字符,$n代表第n个字符。$0代表全部字符。

awk搜索

awk搜索就是按照一定的patten对文件进行查找

搜索/etc/passwd有root关键字的所有行

#awk -F: '/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash

这种是pattern的使用示例,匹配了pattern(这里是root)的行才会执行action(没有指定action,默认输出每行的内容)。

搜索支持正则,例如找root开头的: awk -F: '/^root/' /etc/passwd

 

搜索/etc/passwd有root关键字的所有行,并显示对应的shell

# awk -F: '/root/{print $7}' /etc/passwd             
/bin/bash

 这里指定了action{print $7}

awk编程

 变量和赋值

除了awk的内置变量,awk还可以自定义变量。

下面统计/etc/passwd的账户人数

awk '{count++;print $0;} END{print "user count is ", count}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
......
user count is  40

count是自定义变量。之前的action{}里都是只有一个print,其实print只是一个语句,而action{}可以有多个语句,以;号隔开。

 

这里没有初始化count,虽然默认是0,但是妥当的做法还是初始化为0:

awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}' /etc/passwd
[start]user count is  0
root:x:0:0:root:/root:/bin/bash
...
[end]user count is  40

 

统计某个文件夹下的文件占用的字节数

ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}'
[end]size is  8657198

 


本文转载自:http://blog.csdn.net/feihongxueni/article/details/50996497

共有 人打赏支持
w
粉丝 0
博文 27
码字总数 0
作品 0
海淀
9.6/9.7 awk(上、下)

9.6 awk命令(上) >awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式...

Champin
2017/11/22
0
0
Linux Shell 文本处理工具集锦

Linux Shell 文本处理工具集锦 本文将介绍Linux下使用Shell处理文本时最常用的工具: find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk; 提供的例子和参数都是最常用和最为实用...

平凡之路
2014/10/13
0
0
Linux 中几个高效过滤命令

过滤器是一个程序,它从标准输入读取数据,在数据上执行操作,然后把结果写到标准输出。 因此,它可以用来以强大的方式处理信息,例如重新结构化输出以生成有用的报告,修改文件里面的文本,...

问题终结者
05/15
0
0
如何学习Linux命令-初级篇

首先声明,本人也是菜鸟,整理这篇博客只是为了记录自己学习Linux命令的一些心得,各路高手拍砖请手软。 也许作为一个刚入门的Linux新手,在众多的Linux发行版本面前,难免会眼花,有大把时间...

彗星麦田圈
2012/05/07
0
3
windows下如何玩linux命令

新手想练习linux命令,可能想到的有下面几种: 装个虚拟机,下个linux镜像 SecureCRT等工具远程连linux服务器玩 Cygwin等 以上几点都是操作成本比较高的,接下来为初学者推荐一个很简单的方式...

snecker
2015/11/19
0
0
linux系统计算从1加到100之和思路风暴

原题:通过shell编程或命令行方式求1+2+3...+100=?的和来活学活用shell及linux命令。 阅读完本博文,你将熟悉shell编程中的for语句、while语句及until等语句的使用语法和应用方法。在linux的...

李长春
2012/02/02
0
0
linux之执行脚本文件(aapt)得到apk包名

1、问题 我们在ubuntu上经常想看到apk的包名,然后在终端通过pidcat.py packageName 过滤日志,我们常用的办法手机连接电脑,然后打开这个app adb shell dumpsys activity top 我们可以看到当...

u011068702
05/23
0
0
Linux运维必会的面试题(二)

一、Linux的启动过程? 开机自检:服务器主机开机以后,将根据主板BIOS(Basic Input/Output System,基本输入输出系统)中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据...

何小帅
06/26
0
0
LINUX - awk命令之NF和$NF区别

LINUX - awk命令之NF和$NF区别 NF和$NF 区别问答: 1.awk中$NF是什么意思? #pwd /usr/local/etc ~# echo $PWD | awk -F/ '{print $NF}' etc NF代表:浏览记录的域的个数 $NF代表:最后一个F...

考拉睡
2013/04/13
0
0
监控io性能/free命令/ps命令/查看网络状态/linux下抓包

监控io性能 使用iostat命令查看磁盘负载情况 重点关注:%util占比,如果这个值越大则表示你的硬盘越忙,这也会是你系统变慢的原因; 查看具体哪个进程在读写,使用iotop,首次使用需要Yum安装...

Hi_Yolks
07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

设计神器 - 摹客设计系统上线了 | 晒出你的设计规范,赢iPad Pro!

在国内,设计规范也许还是个不太常用的概念,但是如果你正好有参与互联网公司的产品设计,你应该早就已经体会到设计规范的重要性了。UI设计师总是要花费大量的时间和精力向开发描述一大堆设计...

mo311
10分钟前
0
0
Thymeleaf 使用过程中的一些记录

Thymeleaf格式化时间: th:value="${#dates.format(gw.regDT,'yyyy-MM-ddHH:mm:ss')}" Thymeleaf select反选: <select id="status" name="status" th:field="${gw.status}" th:value="${gw.......

惊尘大人
13分钟前
0
0
istio源码分析之pilot-discovery模块分析

本文分析的istio代码版本为0.8.0,commit为0cd8d67,commit时间为2018年6月18日。 本文为Service Mesh深度学习系列之一: Service Mesh深度学习系列part1—istio源码分析之pilot-agent模块分...

xiaomin0322
18分钟前
0
0
数据库基本操作:增删改查及联表操作

所用软件:SQL Server Management Studio 首先第一步,建立一个表。在这里命名为T1。并在里面填入几条数据。如图: T1 一.查询 查询所有:select * from T1; 按条件查询:select * from T1 ...

小_橙_子
22分钟前
0
0
Crontab作业时间设置

今天,遇到这么一个题目,周一到周五的9:00-16:59之间,每隔两分钟将某个命令运行一次。给的答案是: */2 9-16 * * 1-5 /usr/sbin/somecommand dosomething 乍一看,这个答案不对,应...

大别阿郎
27分钟前
0
0
ES17-JAVA API文档管理

1.保存文档 可以通过json工具把java对象转换成json字符串进行保存,也可以通过内置的帮助类直接构建json格式 /** * 获取客户端 * * @return */public static TransportClie...

贾峰uk
27分钟前
0
0
Python代码规范和命名规范

前言 Python 学习之旅,先来看看 Python 的代码规范,让自己先有个意识,而且在往后的学习中慢慢养成习惯 一、简明概述 1、编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头...

blackfoxya
30分钟前
0
0
联动滑动之一:NestScrollChild和NestedScrollingParent

NestScrollChild和NestedScrollingParent 吐槽一下开源中国竟然标题字数有限制 由于项目中使用了CoordinateLayout来解决联动以及实现炫酷的UI效果,那么必须就要研究一波源码了,毕竟知其然知...

JerryLin123
47分钟前
1
0
cloudera spark2.2 读写hbase

cloudera spark2.2 读写hbase 例子 host = 'bigdata-03,bigdata-05,bigdata-04'conf = { "hbase.zookeeper.quorum": host, "hbase.mapreduce.inputtable": "student1"}k......

osenlin
52分钟前
0
0
数据库规范化

转载自 一个小时学会MySQL数据库 地址:http://www.cnblogs.com/best/p/6517755.html 截取其中 1.4 部分 用于自己学习使用 感谢作者:张果 1.4、数据库规范化 经过一系列的步骤,我们现在终于...

十万猛虎下画山
53分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部