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 从事编程这个 ...
 
随机推荐
- [php-error-report]PHP Strict Standards:  Only variables should be passed by reference
			
// 报错代码:PHP Strict Standards: Only variables should be passed by reference $arr_userInfo['im_nation_ ...
 - [机翻] WIRER ON THE WIRE - SIGNALR协议的非正式描述
			
原文 原文很简单,以下为机翻 WIRER ON THE WIRE - SIGNALR协议的非正式描述 我已经看到询问有关SignalR协议的描述的问题出现了很多.哎呀,当我开始关注SignalR时,我 ...
 - ionic3.x angular4.x ng4.x 自定义组件component双向绑定之自定义计数器
			
本文主要示例在ionic3.x环境下实现一个自定义计数器,实现后最终效果如图: 1.使用命令创建一个component ionic g component CounterInput 类似的命令还有: ...
 - python--partial偏函数
			
new_func = partial(函数名,参数), 生成一个新的函数, 新的函数中参数是partial固定时的参数 例1: from functools import partial def f ...
 - PHP eval函数
			
代码: eval("echo'hello world';"); 上边代码等同于下边的代码: echo"hello world"; 在浏览器中都输出:hello ...
 - linux下时间问题---date
			
显示日期 显示日期和时间
 - UICollectionView设置首个cell默认选中(二)
			
上篇对于UICollectionView默认选中cell采取的是每个cell分别对应一个标识,也就代表着废除了UICollectionView的重用机制.对于较少的数据情况是可以的,但是对于数据比较大 ...
 - sync.WaitGroup和sync.Once
			
sync.WaitGroup,顾名思义,等待一组goroutinue运行完毕.sync.WaitGroup声明后即可使用,它有如下方法: func (wg *WaitGroup) Add(delta ...
 - 浅谈 Web 缓存
			
在前端开发中,性能一直都是被大家所重视的一点,然而判断一个网站的性能最直观的就是看网页打开的速度.其中提高网页反应速度的一个方式就是使用缓存.一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并 ...
 - Node.js中的模块接口module.exports浅析
			
在写node.js代码时,我们经常需要自己写模块(module).同时还需要在模块最后写好模块接口,声明这个模块对外暴露什么内容.实际上,node.js的模块接口有多种不同写法.这里作者对此做了个简单 ...