Linux awk命令常见使用方法介绍
Linux awk命令常见使用方法介绍
By:授客 QQ:1033553122
awk运行方式有三种,其中常用的为命令行方式
awk [-F field_separator] '{pattern + action}' input_file(s)
其中,其中 pattern 表示awk需要查找的内容,由符号//包围,形如 /^shouke/,而 action 是在找到匹配内容时所执行的一系列命令,[-F field_separator]可选,input-file(s) 是待处理的文件。
通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令来处理文本。
在awk中,文件的每一行中,由域分隔符(field_separator,默认为空格)分开的每一项称为一个域。
[root@localhost ~]# touch testfile
[root@localhost ~]# vim testfile
id name sex addr hobby
1 name:shouke sex:男 addr:深圳 hobby:music
2 name:laiyu sex:女 addr:云南 hobby:none
例子1:不指定分割符,从文件读取数据(awk '{action}' input_file(s)
[root@localhost ~]# awk '{print $1, $2}' testfile
id name
1 name:shouke
2 name:laiyu
说明:awk工作流程是这样的:读入由换行符'\n'分割的一条记录,然后将记录按指定的域分隔符划分域,填充域($0则表示所有域,$1表示第一个域,$n表示第n个域),接着读取下一条记录,重复前面的操作。默认域分隔符是"空白键" 或 "tab键"
例子2:指定分隔符,从文件读取数据(awk -F field_separator '{action}' input_file(s)
[root@localhost ~]# awk -F ':' '{print $1, $2}' testfile
id name sex addr hobby
1 name shouke sex
2 name laiyu sex
例子3:从命令输出结果读取数据
[root@localhost ~]# cat testfile | awk '{print $2, $3}'
name sex
name:shouke sex:男
name:laiyu sex:女
例子4:格式化输出
[root@localhost ~]# cat testfile | awk '{print $2"\t"$3}'
name sex
name:shouke sex:男
name:laiyu sex:女
例子5: 指定初始操作和结尾操作
[root@localhost ~]# cat testfile | awk 'BEGIN {print "first"} {print $2,$3} END {print "finally"}'
first
name sex
name:shouke sex:男
name:laiyu sex:女
finally
例子6:指定pattern模式(awk [-F field_separator] '{pattern}' input_file(s)
[root@localhost ~]# cat testfile | awk '/laiyu/'
2 name:laiyu sex:女 addr:云南 hobby:none
说明:
1.例子为搜索文件中所有包含pattern即字符串“laiyu”的行记录,仅匹配了pattern(例中为laiyu)的行才会执行action(这里没有指定action,默认输出每行的内容)。
2.搜索支持正则,例如找laiyu开头的: cat testfile | awk '/^laiyu/'
例7:指定pattern+action模式(awk [-F field_separator] '{pattern+action}' input_file(s) [root@localhost ~]# cat testfile | awk '/laiyu/{print $2, $3}'
name:laiyu sex:女
例8:printf格式化输出
[root@localhost home]# cat testfile | awk '{print $2}' | awk -F ':' '{printf("newname:%5s, oldname:%5s\n", $2, $2)}'
newname: , oldname:
newname:shouke, oldname:shouke
newname:laiyu, oldname:laiyu
newname: , oldname:
例9:自定义变量
[root@localhost home]# cat testfile | awk 'BEGIN {num=0;}{num=num+1;} END{print "rows of record have been read is: " num}'
rows of record have been read is: 4
说明:例中自定义了一个变量:num,初始值为0。action{}中可以有多条语句,每条以;号隔开。
例10:使用内置变量
[root@localhost home]# cat testfile | awk '{print "rows of record have been read is: " NR}'
rows of record have been read is: 1
rows of record have been read is: 2
rows of record have been read is: 3
rows of record have been read is: 4
说明:处理$0等变量,awk还有其它内置变量,比如 NR--读取的记录数,FILENAME--awk浏览的文件名
除此之外,action {}中还可使用循环语句,判断语句等
Linux awk命令常见使用方法介绍的更多相关文章
- linux awk命令详细使用方法
简单介绍 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部 ...
- linux service命令常见使用方法
service命令,顾名思义,就是用于管理Linux操作系统中服务的命令. 1. 声明:这个命令不是在所有的linux发行版本中都有.主要是在redhat.fedora.mandriva和centos ...
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- linux awk命令详解,使用system来内嵌系统命令, awk合并两列
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- Linux awk命令 --三剑客老大
Linux awk命令 --三剑客老大 基本用法: awk [参数] ['找谁{干啥}'] 文件 参数: -F 分隔符 -v 创建或修改awk变量 OFS 输出分割符 awk显示每一列的时候分隔 ...
- Linux awk命令使用方法
awk是linux上非常好用的文本处理工具,常用于指定列的处理,包括获取指定列的内容.根据指定列匹配关系输出等文本处理.本文主要描述awk命令的基本语法.正则表达式与操作符的使用.常用内置变量的含义和 ...
- 详述Linux ftp命令的使用方法
转自:http://os.51cto.com/art/201003/186325.htm ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里 ...
- Linux awk命令详解??????????(研究)
http://blog.chinaunix.net/uid-25120309-id-3801250.html 一. AWK 说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行 ...
- Linux ftp命令的使用方法 -- 转
http://jingyan.baidu.com/article/066074d68b6a7ac3c21cb038.html FTP(File Transfer Protocol, FTP)是TCP/ ...
随机推荐
- odoo开发笔记 -- 异常、错误、警告、提示、确认信息显示
1.检查业务逻辑中的错误,终止代码执行,显示错误或警告信息: raise osv.except_osv(_('Error!'), _('Error Message.')) 示例代码: #删除当前销售单 ...
- Python全局解释器锁 -- GIL
首先强调背景: 1.GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定. 2.每个CPU在同一时间只能 ...
- numpy.random.randn()与numpy.random.rand()的区别(转)
numpy中有一些常用的用来产生随机数的函数,randn()和rand()就属于这其中. numpy.random.randn(d0, d1, …, dn)是从标准正态分布中返回一个或多个样本值. n ...
- android初探
随着nodejs的不断发展,前端的范围越来越大,所以,适当的了解移动端是非常有必要的,比如使用RN开发app,前端必须要和安卓工程师沟通共同开发,那么学习android的基本知识就很重要了,因为目前安 ...
- spring-boot-starter-actuator
首先在pom中添加依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xml ...
- oc中类的实例化及方法调用
上一篇我们讲了oop和类的创建,上一篇的重点我们回顾一下 类 对象 实例 方法 接口 这一篇我们来实现类的实例化,调用类中的公共参数和方法:类的实现在.m文件中,以下是实现代码: // // HuiT ...
- linux下mysql5.7以上my.cnf配置文件配置
简单配置,低配置服务器配置 [client] #客户端设置 port = 3306 socket = /data/mysql/data/mysql.sock default-character-set ...
- MVC源码分析 - Action查找和过滤器的执行时机
接着上一篇, 在创建好Controller之后, 有一个 this.ExecuteCore()方法, 这部分是执行的. 那么里面具体做了些什么呢? //ControllerBaseprotected ...
- MySQL和Mariadb二进制日志binlog详解
Mariadb/mysql提供了4中不同的日志,分别是错误日志(error.log).普通日志(general log).慢日志(slow log)以及二进制日志(binlog).错误日志记录了系统启 ...
- 关于LVS+Nginx为什么会被同时使用的思考
最初的理解 (也可以每个nginx都挂在上所有的应用服务器) nginx大家都在用,估计也很熟悉了,在做负载均衡时很好用,安装简单.配置简单.相关材料也特别多. lvs是国内的章文嵩博士的大作,比ng ...