[ Linux 命令 ] awk
一、AWK简介
awk:报告生成器,是以行为单位进行处理,并格式化后显示
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
二、AWK变量
2.1 awk内置变量之记录变量
FS: 默认是空白字符,指定输入分隔符
RS: 输入文本信息所使用的换行符
OFS: 输出字符分隔符
ORS: 输出行分隔符
FS or -F
[root@node1 ~]# cat test.txt
this is a test.
[root@node1 ~]# awk -F' ' '{print $0}' test.txt FS可以使用-F选项,当没有使用-F选项的时候,awk默认-F选项为空格或者tab
this is a test.
[root@node1 ~]# awk '{print $0}' test.txt
this is a test.
RS [root@node1 ~]# cat abc
1|2|3
[root@node1 ~]# awk 'BEGIN{RS="|"}{print $0}' abc 找到"|"符号,将它变成回车
1
2
3
OFS [root@node1 ~]# cat test.txt
this is a test.
[root@node1 ~]# awk 'OFS=":"{print $1,$2,$3,$4}' test.txt 将文件的间隔由空格符换成分号
this:is:a:test.
ORS
[root@node1 ~]# cat abc
[root@node1 ~]# awk 'BEGIN{ORS="----\n"}{print $0}' abc # 输出分隔符号。
----
----
----
2.2 awk内置变量之数据变量
NR: awk命令所处理的记录数 :如果有多个文件,这个数目会把处理的多个文件中行统一计数
FNR:与NR不同的是,FNR用于记录正处理的行是当前这一文件中被总共处理的行数
NF: 当前记录的字段个数
[root@node1 ~]# cat test1
[root@node1 ~]# cat test2
NR
[root@node1 ~]# awk '{print NR}' test1 test2 # 两个文件行数之和
FNR
[root@node1 ~]# awk '{print FNR}' test1 test2 # 两个文件的行数分别显示出来
NF [root@node1 ~]# cat test.txt
this is a test.
[root@node1 ~]# awk '{print NF}' test.txt # NF是计算一行中的字段数 [root@node1 ~]# awk '{print $NF}' test.txt # 而$NF则是一行中最后一个字段的简单表示方法
test.
三、printf
printf命令的使用格式:
printf format,item1,item2,...
要点:
1、其与print命令的最大不同是,printf需要指定format;
2、format用于指定后面的每个item的输出格式
3、printf语句不会自动打印换行符;\n
format格式的指定符都以%开头,后跟一个字符,如下:
%c: 显示字符的ASCII码;
%s: 显示字符串
修饰符:
N:显示宽度;
-:左对齐
+:显示数值符号
常见模式类型
1、regexp:正则表达式,格式为/regular expression/
2、expression:表达式,其值非0或为非空字符串时满足条件,如:$1 ~ /foo/ 或 $1 == "magedu",用运算符~(匹配)和!~(不匹配)
3、ranges:指定的匹配范围,格式为part1,part2
4、BEGIN/END:特殊模式,仅在awk命令执行前运行一次或结束前运行一次
5、Empty(空模式):匹配任意输入行
例:取得/etc/passwd中每个用户名和shell格式化显示出来:
[root@node1 ~]# awk -F: '{printf "%-10s %-10s\n",$1,$NF}' /etc/passwd
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
......
[root@node1 ~]# awk -F: 'BEGIN{printf "%-10s %-10s\n","User","Shell"}{printf "%-10s %-10s\n",$1,$NF}' /etc/passwd
User Shell
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
......
例:获取服务器tcp连接的每种状态数量
[root@node1 ~]# netstat -nat | awk '/^tcp/{++S[$NF]}END{for (i in S){print i,S[i]}}'
ESTABLISHED
LISTEN 4
/^tcp/ 正则表达式: 匹配以tcp开头的行
{++S[$NF]} 获取每行的最后一个字节添加到数组,此时的S为数组 $NF为下标
END{for (i in S){print i,S[i]}} 处理完成后,通过下标循环打印出 下标 和 变量值
[ Linux 命令 ] awk的更多相关文章
- 【转】如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并 ...
- <转>如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
原文链接:http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB) ...
- 转摘--如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或 ...
- 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等(转)
你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作.数据专家们,我是在对你们说.你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, ...
- linux命令-awk入门
最近经常查看nginx日志,有时候需要做一些统计分析,于是就想起了awk,学习了就顺便做一个记录. 目录 概述:简单介绍awk背景原理 基本用法:常用到的awk语法 内建变量 综合实例 概述 awk是 ...
- Linux命令awk
1.简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大. 简单来说awk就是把文件逐行读入,默认以空格为分隔符将每行切片,切开的部 ...
- linux命令-awk,sort,uniq
学习地址:http://man.linuxde.net/awk#awk的工作原理 awk 选项参数说明: -F fs or --field-separator fs 指定输入文件折分隔符,fs是一个字 ...
- 每天一个linux命令--awk
统计计算日志 pmail@app2linux04 performance]$ grep 'user:logBehaviorAction' performance.log|awk -F '|' '{pr ...
- 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
http://blog.chinaunix.net/uid-20662820-id-4023733.html http://www.faqs.org/faqs/snmp-faq/part2/ http ...
随机推荐
- Leetcode 672.灯泡开关II
灯泡开关II 现有一个房间,墙上挂有 n 只已经打开的灯泡和 4 个按钮.在进行了 m 次未知操作后,你需要返回这 n 只灯泡可能有多少种不同的状态. 假设这 n 只灯泡被编号为 [1, 2, 3 . ...
- Chrome 与 Firefox-Dev 的 DevTools
不管是做爬虫还是写 Web App,Chrome 和 Firefox 的 DevTools 都是超常用的,但是经常发现别人的截图有什么字段我找不到,别人的什么功能我的 Chrome 没有,仔细一搜索才 ...
- Flask 学习笔记(二):RESTful API
概括 URL:需要操作的对象,也就是资源 HTTP method:我要对该对象做什么(POST 增.DELETE 删.GET 查.PUT 和 PATCH 改) HTTP status code:操作的 ...
- java课程设计——2048
1.团队介绍 2.项目git地址 [https://gitee.com/SMTwula/java036.git] 3.项目git提交记录截图 沈梦婷 田亚琴 4.项目功能架构图与主要功能流程图 5.项 ...
- lintcode-130-堆化
130-堆化 给出一个整数数组,堆化操作就是把它变成一个最小堆数组. 对于堆数组A,A[0]是堆的根,并对于每个A[i],A [i * 2 + 1]是A[i]的左儿子并且A[i * 2 + 2]是A[ ...
- elasticsearch this is not a http port
访问的是elastic search的tcp端口,需换成http端口. elastic search默认tcp端口9300,http端口9200 如果浏览器中访问http://localhost:92 ...
- tomcat 路径"/"表示根目录
- ASP.NET页面之间传值Session(2)
想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽. 优点:1.使用简单,不仅能传递简单数据类型,还能传递对象. 2 ...
- LeetCode -- Best Time to Buy and Sell Stock系列
Question: Best Time to Buy and Sell Stock Say you have an array for which the ith element is the pri ...
- LeetCode--Reverse Linked List(Java)
相似题目: Palindrome Number Valid PalinDrome Reverse Linked List Palindrome Linked List 翻转单链表(要注意的是是否含有头 ...