AWK工具的用法
基本格式
awk '{commands}' filename
或者
stdin | awk '{commands}'
以下,均简写为awk '{commands}'的形式
commands的用法
commands逐行作用于文本流
- $1当前行第一列数据,$NF最后列,$(NF-1)即倒数第二列
awk '{print $(NF-1)}'
# 补充说明:
$0 当前行所有列
NR 当前行号
NF 当前行字段数
- print默认结尾换行;printf不换行
awk '{printf $1}'
- 多条语句以分号间隔
awk '{printf $1; print $(NF-1)}'
- 多个参数以逗号间隔,打印后以空格间隔
awk '{print $1, $2, $3}'
- 空格会被忽略不计
awk '{print $1 $2}'
打印结果这两个参数会被[字符拼接]
- 双引号拼接字符
awk '{print $1 ":" $2}'
打印结果是这两个参数用冒号连接
# 补充说明
外层的单引号也可以用双引号,
此时内层拼接用单引号
- 通过for循环打印范围列
awk '{for(i=9;i<NF;i++) printf $i"\t"; print ""}'
以分号制造了两个语句
1. 循环语句仅作用于紧跟着的打印语句
2. 循环完成后执行print语句换行
# 补充说明
如果for循环内有多条语句,必须使用大括号括起来:
awk '{
for(i=9;i<NF;i++){
printf $i; #此处分号不可以省略
print "\t"
}; #此处分号可以省略
print ""; #此处分号不可以省略
print ""
}'
- 通过条件判断执行打印
方法一: 条件操作语句(和for循环用法一致)
awk '{if($9>=100 && $10>=50)printf $9;print ""}'
使用多条语句:
awk '{
if($9>=100 && $10>=50){
printf $9;
printf "\t"$10
}
else if($9<100 && $10 >=50){
printf "$10"
}
else{
print "it\'s ok"
}
}'
方法二: 条件模式
awk自带三个条件模式:前面讲的所有均为中间的commands:
awk 'BEGIN {COMMANDS1} pattern {commands} END {COMMANDS2}'
实例:
awk '$9>=100||$10>=2{print $9"\t"$10}'
第九列值大于100且第十列值大于2时,打印这两个值
awk '!/CrowdApp/ && $9>=50 {print $9"\t"$10}'
包含CrowdApp字段,且第九个字段大于50时,打印xxx
awk 'NR==5,NR==10{print $0}'
打印5-10行的所有值
- BEGIN和END
awk 'BEGIN{ i=0 } /CrowdApp/ {print $0;i++} END{print $i}'
# 补充说明
BEGIN在执行awk所有命令前先执行一次;
patterns内的command每一行都会执行一次;
END只有在执行完所有语句后执行一次。
- awk参数传递
方法一:
awk -v var=$pwd '{print var}'
方法二:
awk '{print v1, v2}' v1=$VAR1, v2=$VAR2
- 指定字段分隔符
awk -F: '{print $NF}'
默认以空格分割各个字段;此时指定冒号分割
AWK工具的用法的更多相关文章
- shell脚本 awk工具
awk工具概述awk编程语言/数据处理引擎基于模式匹配检查输入文本,逐行处理并输出通常在shell脚本中,或取指定的数据单独用时,可对文本数据做统计 命令格式格式一:awk [选项] '[条件]{编辑 ...
- linux中awk工具的使用(转)
add by zhj: awk很强大,它是一个简单的编程语言,国外有本专门的书介绍它的用法.<effective awk programming>,它支持整型,字符串型,数组,变量在使用前 ...
- [转帖]Linux中awk工具的使用
Linux中awk工具的使用 2018年10月09日 17:26:20 谢公子 阅读数 2170更多 分类专栏: linux系统安全 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权 ...
- Linux截屏工具scrot用法详细介绍
Scrot是Linux命令行中使用的截图工具,能够进行全屏.选取等操作,下面小编将针对Scrot截图工具的用法给大家做个详细介绍,通过操作实例来学习Scrot的使用. 在Linux中安装Scrot ...
- awk 的一些用法
awk,我觉得是Linux里面处理文本最精妙的命令,它是一个行处理的命令,它最初级的用法是:给定一些简单的pattern,然后按照这个pattern 去搜索匹配的行.它的高级用法是用awk来编程,除了 ...
- Apache自带压力测试工具ab用法简介
ab命令原理 ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL进行访问.它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx.lighthttp ...
- Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解
Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解 Mysql慢查询开启 Mysql的查询讯日志是Mysql提供的一种日志记录,它用来记录在Mysql中响应 ...
- Shellz中awk的简单用法
其实shell脚本的功能常常被低估.在实际应用中awk sed 等用法可以为shell提供更为强大的功能.下面我们将一下awk调用的简单方法进行了总结.方便同学们学习: awk的简单用法: 第一种调用 ...
- Java 代码规范,你应该知道的一些工具和用法(转)
转自:http://yifeng.studio/2017/06/30/coding-with-code-style/ Java 代码规范,你应该知道的一些工具和用法 2017-06-30 从事编程这个 ...
随机推荐
- 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画
[源码下载] 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画 作者:webabcd 介绍背水一战 Windows 10 之 控件(导航类) Frame 动画 示例An ...
- 四种List实现类的对比总结
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1.ArrayList 非线程安全 基于对象数组 get(int index)不需要遍历数组,速度快: it ...
- 不一样的网络流系列——Dinic跑得快
前言 摆王兴致冲冲地跑到我们机房来对我说跟你讲一个黑科技... Dinic的神奇优化 Dinic优化 我们发现如果Dinic不建反向边会跑的飞起(当然Wa是必然的) 所以考虑在加反向边的基础上优化. ...
- Django(ORM常用字段)
day68 参考:http://www.cnblogs.com/liwenzhou/p/8688919.html 1. Django ORM常用字段: 1. AutoField ...
- web端权限维持【好文】
前言 关于权限维持,我之前写过一篇基于系统端的后门技术文章,如映像劫持啊,lpk之类. 内容目录: - 构造文件包含漏洞- 隐蔽性脚本木马- 构造sql注入点 正文 0x01 构造文件包含漏洞 > ...
- linux 服务器脚本采集数据中文无法执行错误
问题描述:在 RHEL6 版本的服务器上使用脚本操作数据库,其中一个SQL的字段值为中文,每次使用 crontab定时 执行该脚本无法获取数据,实现预期效果,而手动执行正常. oracle clien ...
- SQL面试题之行转列
典型的课程表: mysql> select * from course; +----+------------+----------+------------+ | id | teacher_i ...
- 使用Nginx转发TCP/UDP数据
编译安装Nginx 从1.9.0开始,nginx就支持对TCP的转发,而到了1.9.13时,UDP转发也支持了.提供此功能的模块为ngx_stream_core.不过Nginx默认没有开启此模块,所以 ...
- Apache JMeter的基本使用
安装 安装地址:http://jmeter.apache.org/download_jmeter.cgi 解压后运行jmeter.bat的批处理文件就可以了 JMeter测试脚本编写: 1,创建线程组 ...
- 1. git基础
1. 安装git sudo apt-get install git 2. 注册 git config --global user.name "Your Name" git conf ...