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/ ...
随机推荐
- Spring框架的演变
什么是Spring 如果想要解释Spring,那么最难的部分就是对其进行分类.通常情况下,Spring被描述为构建Java应用程序的轻量级框架,但这种描述带来了两个有趣的观点. 首先,与许多其他框架( ...
- KVM的VPS主机在Centos6.x下修改系统时间
显示系统时间 # date "+%Y-%m-%d %H:%M:%S" 修改系统时区 # cp /usr/share/zoneinfo/Asia/Shanghai /etc/loca ...
- windows系统numpy的下载与安装教程
numpy是一款基于python的功能强大的科学计算包.要安装numpy首先你得先安装python.python的安装非常简单,本人安装的是python3.4. 工具/原料 安装好的python程序 ...
- shell 数组使用简介
数组简介 bash 只提供一维数组,并且没有限定数组的大小.类似与C语言,数组元素的下标由0开始编号.获取数组中的元素要利用下标.下标可以是整数或算术表达式,其值应大于或等于 0.用户可以使用赋值语句 ...
- .Net 鉴权授权
在这里总结一下工作中遇到的鉴权和授权的方法 ① 固定token的方案 通过在nginx或者代码中写死token,或者通过在限制外网访问的方式已来达到安全授权的方式 ② session方案 分布式会话方 ...
- Python基础之好玩的字符串格式化f-string格式
转自白月黑羽 Python3教程 : http://www.python3.vip/doc/tutorial/python/0010/#f-string-格式化 f-string 格式化 f-stri ...
- Java之建造者模式(Builder Pattern)(转)
1.概念 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. [构建与表示分离,同构建不同表示] 与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者 ...
- logstash-2-插件配置
配置语法: Logstash必须有一个 input 和一个 output 1, 处理输入的input 1), 从文件录入 logstash使用一个名为 filewatch的 ruby gem库来监听 ...
- Java中带包(创建及引用)的类的编译
Java中带包(创建及引用)的类的编译与调试 java源程序的编译大家都知道,也就是cmd中到源文件所在目录下javac **.java即可,当程序中有包声明还能简简单单的直接javac **.jav ...
- 如何精准实现OCR文字识别?
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云计算基础发表于云+社区专栏 前言 2018年3月27日腾讯云云+社区联合腾讯云智能图像团队共同在客户群举办了腾讯云OCR文字识别-- ...