awk命令入门
什么是awk?
AWK是一个强大的文本处理工具。可以使用awk读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
使用awk的基本格式
awk [options] ‘command’ file(s)
command 由pattern和action两部分组成
command 的格式 为 pattern {action}
1. pattern可以是正则表达式或者关系表达式
2. action 包含两部分:
(1). 内置函数
print printf getline 等
(2). 控制指令
if else while
awk options配置选项
- -F filed-separator(分割符,默认为空格)
例子:
#打印所有用户的用户名、UID、GID
#内置变量$1 $3 $4的使用可以参考下面的awk内置变量的说明及
awk -F ':' '{printf "USER:%-20s UID:%10i GID:%10i\n",$1,$3,$4}' /etc/passwd
awk内置变量
- $0: 表示当前行
- $1: 表示每行的第一个字段
- $2: 表示每行的第二个字段
- ….
- *$n: 表示每行的第三个字段
- NR: 每行的行号
- NF: 每行的字段数
例子:
#在上一个例子的基础上添加行号、文件名、字段数
awk -F ':' '{printf "LineNUmber:%5i | USER:%-20s | UID:%10i | GID:%10i | FILENAME:%10s|NF:%10i\n",NR,$1,$3,$4,FILENAME,NF}' /etc/passwd
awk逻辑判断式
awk 中的逻辑判断式可以是正则表达式或者关系表达式
~,!~:正则表达式
例子: 打印m开头的用户名
$awk -F ':' '$1~/^m.*/{print $1}' /etc/passwd
对正则表达式取反,输出正则表达式匹配行的补集
$awk -F ':' '$1!~/^m.*/{print $1}' /etc/passwd
==,!=,<,>: 逻辑表达式
例子: 判断UID的大小,输出UID大于100的用户名和UID
$awk -F ':' '$3>100{print $1,$3}' /etc/passwd
例子:输出UID不等于100的用户名和UID
$awk -F ':' '$3 != 100{print $1,$3}' /etc/passwd
awk BEGIN代码块、END代码块
BEGIN{command1}pattern{command2}END{command3}
例子 :在开始添加表头,在结尾添加表尾
awk -F ':' 'BEGIN{print "LineNum TotalColNum User UID"}{print NR,NF,$1,$3}END{print "-----"FILENAME"---------"}' /etc/passwd
awk使用实例
- 统计当前目录文件总和
ls -l|awk 'BEGIN{size=0}{size+=$5}END{print "size is "size/1024/1024"M"}'
- 统计用户数
awk -F ':' 'BEGIN{count=0}$1!~/^$/{count++}END{print " count = "count}' /etc/passwd
- 输出UID大于100的用户名以及在输出的行集合中的行号
awk -F ':' 'BEGIN{count=0}{if ($3 >100 ) name[count++]=$1}END{ for (i=0;i<count;i++) print i,name[i]}' /etc/passwd
- 统计每种网络状态的连接的数量
netstat -anp | awk '$6~/CONNECTED|LISTEN/{sum[$6]++}END{for (i in sum) print i,sum[i]}'
awk命令入门的更多相关文章
- Linux Shell脚本入门--awk命令详解
简单使用: awk :对于文件中一行行的独处来执行操作 . awk -F :'{print $1,$4}' :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 . 详细介绍: AWK命令介绍 ...
- awk 命令使用入门
Linux 下处理和分析文本文件内容,AWK 命令是一个强有力的工具.特别是文件内容是以行和列的形式排版的时候,AWK 就是命令行界的 Excel 啊! 简单的 awk 命令可以直接在命令行中使用,复 ...
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- AWK命令学习
使用方法 awk 'pattern {action}' {filenames} 尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到 ...
- awk 命令
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- [Linux] linux awk命令详解
reference : http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 简介 awk是一个强大的文本分析工具,相对于g ...
- awk命令简单介绍
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- Linux的awk命令
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- awk命令--update20150120
简介 awk是一个强大的文本分析工具,把文件逐行读入,以空格为默认分隔符分割成field,切开的部分再进行各种分析处理. 模式和动作: 任何awk语句都是由模式和动作组成,模式部分决定动作语句何时触发 ...
随机推荐
- MySQL数据库(三)
前提要述:参考书籍<MySQL必知必会> 2.1 MySQL简介 2.1.1 什么是MySQL MySQL是一种关系数据库管理系统.负责数据库中数据的存储,检索,管理和处理. 2.1.2 ...
- Java解析文件内容
本文主要实现对.chk文件的解析,将其内容读出来,存入到一个Map中,文件内容实例为: A0500220140828.CHK A05002 |34622511 |373532879 |3 识别分隔符| ...
- Android反编译三件套 apktool 、dex2jar、jd-gui
1.还是老话下载三件套(点击下载) 或者自己在百度搜索下载 2.使用apktool反编译apk cd到D:\TESTCODE\android\android反编译三件套目录下 输入java -jar ...
- ConcurrentHashMap源码解析 JDK8
一.简介 上篇文章详细介绍了HashMap的源码及原理,本文趁热打铁继续分析ConcurrentHashMap的原理. 首先在看本文之前,希望对HashMap有一个详细的了解.不然看直接看Concur ...
- Java Data类
Date类的概述 java.util,Date 表示日期和时间的类类 Date 表示特定的瞬间,精确到千分之一秒(毫秒) 获取时间原点到当前系统时间经历了多少秒 // 时间原点:1970 年 01 月 ...
- MySQL快速回顾:计算字段与函数
9.1 计算字段 存储在数据库表中的数据一般不是应用程序所需要的格式.比如: 如果想要在一个字段中既显示公司名,又显示公式的地址,但这两个信息一般包含在不同的表列中. 城市.州和邮政编码存储在不同的列 ...
- 一文带你看清HTTP所有概念
上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性.我们接着上篇文章没有说完的 HTTP 标头继续来介绍(此篇文章会介绍所有标头的 ...
- 匈牙利算法(Kuhn-Munkres)算法
这个算法有点难度,一般比较标准的描述网页上也有相关的描述,我在这里就简单的用十分通俗的语言给大家入个门 主要可以结合https://blog.csdn.net/zsfcg/article/detail ...
- Java入门 - 高级教程 - 08.Applet
原文地址:http://www.work100.net/training/java-applet.html 更多教程:光束云 - 免费课程 Applet 序号 文内章节 视频 1 概述 2 Apple ...
- typedef声明变量也是一种求值过程
前言: 什么叫做:声明变量是求值过程?请看下面的声明, int i; 很简单,声明了个整型变量i,再看如下声明, int *p; 也很简单,立刻反应出来它是指向整型的指针,但是具体如何推倒出来的呢?其 ...