awk 匹配_linux的awk命令详解,通俗易懂
awk提供了极其强大的功能:可以进行正则表达式的匹配、样式装入、流控制、数字运算符、进程控制语句甚至于内置的变量和函数。
简单地说,awk就是一种用于处理文本的编辑语言工具,它扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式,如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。
@ubuntu:~$awk ' 条件1 {动作1} 条件2 {动作2} ...' file
示例如下:
@ubuntu:~$awk ' i==1 {print $0 } i==2 {print $1} ' file
以上命令的执行逻辑是:awk从file中读取数据,每次读取一行,读到一行数据之后判断每一个条件是否成立,如果成立则执行花括号里面的动作,如i==1成立则执行print $0,再判断i==5是否成立来决定是否执行print$1。然后读取下一行,以此类推。如果一个动作前面没有条件,则这个动作就可以“无条件”执行。
◆
为了更好理解,建一个简单的文档file来执行一遍:
(1)打印指定列
@ubuntu:~$awk ' { print $1, $2} ' file
注意,其中单引号中大括号内就是awk语句,只能被单引号包含。$1表示第一列,$2表示第二列,$n表示第n列。而$0表示整一行(即一行中的所有列)
(2)格式化输出(和C语言差不多)
@ubuntu:~$awk ' { printf " %-10s:%-d\n", $1, $2 } ' file
(3)过滤(条件选择)
@ubuntu:~$awk ' { $3==8 && $4 ==9 } { print $0 } 'file
其含义是读取file中的一行信息,判断第3列是否等于8而且第4列是否等于9,如果是,则打印该一行,然后再读取下一行。
(4)打印表头,引入内建变量a
@ubuntu:~$awk ' { a==1 || $3==8 } {print } 'file
注意:
1、a是一个所谓的内建变量,表示已经读出的记录数(即行号);
2、print后面什么都没有,默认表示print $0。
(5)指定分隔符
@ubuntu:~$awk ' BEGIN { FS=":" } {print $1}' /etc/passwd
注意:BEGIN意味着紧跟在它后面的动作{FS=":"}会在awk读取第一行之前处理。
上面的语句等价于
@ubuntu:~$awk -F:'{ print $1 }' /etc/passwd
如果有多个分隔符,则可以写成
@ubuntu:~$awk -F ' [\t; : ]' ' {print $1}' /etc/paswd
其中,-F '[\t;:]'的意思是指定制表符、分号以及冒号为分隔符
(6)使用正则表达式匹配字符串
@ubuntu:~$awk ' $0~/bria/ {print} ' file
其含义是将所有匹配bria的行打印出来。其中,$0~/bria/是一个条件,表示所指定的域(这里是$0)要匹配的规则(这里是bria),简单说,file中有一行只要含有单词ria,就会被选出来然后打印,同时要注意,这里的单词bria被写在两个“/”之间,事实上这两个“/”之间写的就是“正则表达式”。正则表达式就是一些约定的规则,用这些规则来匹配字符串,从而达到过滤文本信息的目的,也就是使用各种字符和符号,来选出我们想要的信息。
(7)使用模式取反的例子
@ubuntu:~$awk ' $0~/bria.*/ {print} ' file
含义:将所有不匹配bria的行打印出来。
(8)将A项(A列)的信息分别存放在各个文件中
@ubuntu:~$awk ' {print > $1 } ' file
其含义就是每一行都将被重定向到比第一个域(A)命名的文件中去。也可以将指定的域重定位到相应的文件,例如:
@ubuntu:~$awk ' {print $2, $6 > $1 } ' file
其含义是将每一行中的B,C重定位到与其A相应的文件中去!(9)统计各个级别的数量
@ubuntu:~$awk ' NR!= {a[$4]++} '> END{for(i in a) print i "," a[i];}' file
其含义是$4是级别名称,如1,a是一个以这些级别为下标的数组,其值从零开始计算。(10)将某列的数累加并打印出来
@ubuntu:~$awk '{ sum+=$1} END{print sum}' file
其含义是END表示紧跟其后面的语句只会在awk处理完所有行之后才被执行。
awk 匹配_linux的awk命令详解,通俗易懂相关推荐
- mysql的top命令参数_linux下top命令详解包括top命令参数使用及结果(virt,res,shr)排序举例说明...
top 命令是 Linux 下常用的系统资源占用查看及性能分析工具,能够实时显示系统中各个进程的资源(比如cpu.内存的使用)占用状况,类似于 Windows 的任务管理器.top命令的执行结果是一个 ...
- _linux中curl命令详解-linux运维
linux中curl命令的使用详情:1.[curl url]获取该网址的文本信息:2.[curl -i url]获取该网址的文本信息以及协议头部信息:3.[curl -x proxy url]使用代理 ...
- linux执行lsof命令_linux系统 lsof命令详解
简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控 ...
- minicom指令_Linux系统minicom命令详解
minicom 功能说明:调制解调器通信程序 语 法:minicom [-8lmMostz][-a][-c][-C][-d][-p][-S 补充说明:minicom是一个相当受欢迎的PPP拨号连线程序 ...
- linux命令查找java文件_Linux文件查找命令详解
对于文件查找,我们最好用的还是属于find命令了,在说find命令之前,先把另外几个查找命令介绍一下. 目录 0x01 查询命令介绍 0x02 find命令介绍 0x01 查询命令介绍 在介绍之前,首 ...
- linux mysql source命令_Linux下source命令详解
source命令用法 source FileName source命令作用 在当前bash环境下读取并执行FileName中的命令. *注:该命令通常用命令"."来替代. 使用范例 ...
- linux操作系统之终端命令echo命令详解 通俗易懂
一. 使用格式:echo 文字内容 echo命令可以将传递给终端的参数再在终端显示一遍. 那么为什么要将传递的给终端的参数再在终端显示一遍呢? 其实该命令单独使用的几率是很小的,该命令通常是配合重定向 ...
- linux awk命令详解,使用system来内嵌系统命令,批量github,批量批下载视频, awk合并两列...
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- cut\grep\awk\sed命令详解
cut\grep\awk\sed命令详解 1.cut命令详解及实例 (1)作用:提取文件中指定的列 语法格式:cut 选项 文件名 (2)选项作用: -d 分隔符 按照指定的 ...
最新文章
- 开源 免费 java CMS - FreeCMS1.5-建站向导
- 国产SM4密码算法详解和实现
- SAP RETAIL 事务代码MP38可以为多个物料执行预测
- python之路6-迭代器、生成器、装饰器
- android 插件化 模块化开发(apkplug)
- python吃内存还是cpu_Python2 得到 CPU 和内存信息要怎么实现呢?
- java 获取服务器硬件_dell服务器远程获取硬件状态
- Java中看今天是星期几,礼拜几
- CSS具有最高优先级 !important
- 关于插件管理器Alcatraz的一些问题
- 构造器2(Java)
- c语言二进制微粒群算法,离散二进制微粒群算法.pdf
- 《东周列国志》第二十二回 公子友两定鲁君 齐皇子独对委蛇
- 正则表达式的语法及使用
- FSSR : Frequency Separation for Real-World Super-Resolution
- 学以致用-掷双骰儿(craps)游戏的直方图(概率分布)数据分析
- iphonex适配游戏_Unity+iPhoneX适配方案
- PREEMPT_RT 高精度定时器
- Mac电脑如何实现Word一键转PPT
- 关于GetDC()和ReleaseDC()的问题