Linux awk命令
2016-06-23 00:20
375 查看
awk有3个不同版本:
awk、nawk和gawk,未作特别说明,一般指gawk,gawk是
AWK的 GNU版本。awk其名称得自于它的创始人
Alfred Aho、Peter Weinberger和 Brian Kernighan姓氏的首个字母。实际上
AWK的确拥有自己的语言: AWK程序设计语言,三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
尽管操作可能会很复杂,但语法总是这样,其中 pattern表示
AWK在数据中查找的内容,而 action是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。
pattern就是要表示的正则表达式,用斜杠括起来。
awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。
通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。
经过这样的步骤,你会晓得, awk是『以行为一次处理的单位』,而『以栏位为最小的处理单位』。好了,那么
awk怎么知道我到底这个数据有几行?有几栏呢?这就需要 awk的内建变量的帮忙啦~
自定义函数
|awk -F
':' '{print $1"\t"$7}'
$awk-F:'/root/'
/etc/passwd
$awk-F:'/root/{print
$7}' /etc/passwd
转自:
《linux
awk命令详解》
《linux awk完全手册》
1简介
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本:
awk、nawk和gawk,未作特别说明,一般指gawk,gawk是
AWK的 GNU版本。awk其名称得自于它的创始人
Alfred Aho、Peter Weinberger和 Brian Kernighan姓氏的首个字母。实际上
AWK的确拥有自己的语言: AWK程序设计语言,三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
2格式
awk'{pattern + action}' {filenames}尽管操作可能会很复杂,但语法总是这样,其中 pattern表示
AWK在数据中查找的内容,而 action是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。
pattern就是要表示的正则表达式,用斜杠括起来。
awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。
通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。
3调用awk
有3种方式调用awk1.命令行方式 awk [-F field-separator] 'commands' input-file(s) 其中,commands是真正awk命令,[-F域分隔符]是可选的。 input-file(s)是待处理的文件。 在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。 2.shell脚本方式 将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。 相当于shell脚本首行的:#!/bin/sh 可以换成:#!/bin/awk 3.将所有的awk命令插入一个单独文件,然后调用: awk -fawk-script-file input-file(s) 其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。 |
4 awk处理流程
【1】读入第一行,并将第一行的数据填入 $0, $1, $2.... 等变量当中; 【2】依据 "条件类型"的限制,判断是否需要进行后面的 "动作"; 【3】做完所有的动作与条件类型; 【4】若还有后续的『行』的数据,则重复上面 1~3 的步骤,直到所有的数据都读完为止。 |
awk怎么知道我到底这个数据有几行?有几栏呢?这就需要 awk的内建变量的帮忙啦~
5语法
5.1内置变量
awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。ARGC 命令行参数个数 ARGV 命令行参数排列 ENVIRON 支持队列中系统环境变量的使用 FILENAME awk浏览的文件名 FNR 浏览文件的记录数 FS 设置输入域分隔符,等价于命令行 -F选项 NF 浏览记录的域的个数 NR 已读的记录数,即目前 awk所处理的是『第几行』数据 OFS 输出域分隔符 ORS 输出记录分隔符 RS 控制记录分隔符 |
5.2数组
为awk中数组的下标可以是数字和字母,数组的下标通常被称为关键字(key)。值和关键字都存储在内部的一张针对key/value应用hash的表格里。由于hash不是顺序存储,因此在显示数组内容时会发现,它们并不是按照你预料的顺序显示出来的。数组和变量一样,都是在使用时自动创建的,awk也同样会自动判断其存储的是数字还是字符串。一般而言,awk中的数组用来从记录中收集信息,可以用于计算总和、统计单词以及跟踪模板被匹配的次数等等。5.3条件语句
awk中的条件语句是从C语言中借鉴过来的,可控制程序的流程5.4循环语句
awk有三种循环:while循环;for循环;specialfor循环5.5函数
内建函数自定义函数
6示例
$cat/etc/passwd|awk -F
':' '{print $1"\t"$7}'
$awk-F:'/root/'
/etc/passwd
$awk-F:'/root/{print
$7}' /etc/passwd
转自:
《linux
awk命令详解》
《linux awk完全手册》
相关文章推荐
- linux下离线更新nessus漏洞插件的方法
- Linux上安装Python的PIL和Pillow库处理图片的实例教程
- Linux 下设置防火墙白名单
- Linux命令:chmod与chown
- linux下分区相关知识
- linux下的Gradle编译环境搭建与使用
- win7主机与 vmware中的linux 的互相 ping 通的问题
- Linux下读取默认MAC地址
- LINUX 的 FTP 安装
- Centos ftp服务器安装配置
- Centos 查看 登录 登出 重启 日志
- Linux文件处理命令
- Linux下SVN的安装
- 每天一个Linux命令(06)--rmdir命令
- VirtualBox linux 虚拟机的创建
- Linux 查看服务器开放的端口号
- centos 安装openoffice (办公软件 WPS)
- Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置
- linux下java窗口,正确显示中文
- Centos 7 搭建hadoop-2.6.0和spark1.6.0完全分布式集群教程 (最小化配置)