基本格式

awk '{commands}' filename

或者

stdin | awk '{commands}'

以下,均简写为awk '{commands}'的形式

commands的用法

commands逐行作用于文本流

  1. $1当前行第一列数据,$NF最后列,$(NF-1)即倒数第二列
awk '{print $(NF-1)}'
# 补充说明:
$0 当前行所有列
NR 当前行号
NF 当前行字段数
  1. print默认结尾换行;printf不换行
awk '{printf $1}'
  1. 多条语句以分号间隔
awk '{printf $1; print $(NF-1)}'
  1. 多个参数以逗号间隔,打印后以空格间隔
awk '{print $1, $2, $3}'
  1. 空格会被忽略不计
awk '{print $1 $2}'
打印结果这两个参数会被[字符拼接]
  1. 双引号拼接字符
awk '{print $1 ":" $2}'
打印结果是这两个参数用冒号连接
# 补充说明
外层的单引号也可以用双引号,
此时内层拼接用单引号
  1. 通过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 ""
}'
  1. 通过条件判断执行打印
方法一: 条件操作语句(和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行的所有值
  1. BEGIN和END
awk 'BEGIN{ i=0 } /CrowdApp/ {print $0;i++} END{print $i}'

# 补充说明
BEGIN在执行awk所有命令前先执行一次;
patterns内的command每一行都会执行一次;
END只有在执行完所有语句后执行一次。
  1. awk参数传递
方法一:
awk -v var=$pwd '{print var}'
方法二:
awk '{print v1, v2}' v1=$VAR1, v2=$VAR2
  1. 指定字段分隔符
awk -F: '{print $NF}'
默认以空格分割各个字段;此时指定冒号分割

AWK工具的用法的更多相关文章

  1. shell脚本 awk工具

    awk工具概述awk编程语言/数据处理引擎基于模式匹配检查输入文本,逐行处理并输出通常在shell脚本中,或取指定的数据单独用时,可对文本数据做统计 命令格式格式一:awk [选项] '[条件]{编辑 ...

  2. linux中awk工具的使用(转)

    add by zhj: awk很强大,它是一个简单的编程语言,国外有本专门的书介绍它的用法.<effective awk programming>,它支持整型,字符串型,数组,变量在使用前 ...

  3. [转帖]Linux中awk工具的使用

    Linux中awk工具的使用 2018年10月09日 17:26:20 谢公子 阅读数 2170更多 分类专栏: linux系统安全   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权 ...

  4. Linux截屏工具scrot用法详细介绍

    Scrot是Linux命令行中使用的截图工具,能够进行全屏.选取等操作,下面小编将针对Scrot截图工具的用法给大家做个详细介绍,通过操作实例来学习Scrot的使用.   在Linux中安装Scrot ...

  5. awk 的一些用法

    awk,我觉得是Linux里面处理文本最精妙的命令,它是一个行处理的命令,它最初级的用法是:给定一些简单的pattern,然后按照这个pattern 去搜索匹配的行.它的高级用法是用awk来编程,除了 ...

  6. Apache自带压力测试工具ab用法简介

    ab命令原理 ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL进行访问.它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx.lighthttp ...

  7. Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解

    Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解   Mysql慢查询开启 Mysql的查询讯日志是Mysql提供的一种日志记录,它用来记录在Mysql中响应 ...

  8. Shellz中awk的简单用法

    其实shell脚本的功能常常被低估.在实际应用中awk sed 等用法可以为shell提供更为强大的功能.下面我们将一下awk调用的简单方法进行了总结.方便同学们学习: awk的简单用法: 第一种调用 ...

  9. Java 代码规范,你应该知道的一些工具和用法(转)

    转自:http://yifeng.studio/2017/06/30/coding-with-code-style/ Java 代码规范,你应该知道的一些工具和用法 2017-06-30 从事编程这个 ...

随机推荐

  1. hbase首次导入大批次的数据成功!

    本次主要是采用hbase自带的importtsv工具来导入.首先要把数据文件上传到hdfs上,然后导入hbase表格.该导入方式只支持.tsv数据文件的导入. 导入流程: 1.下载数据.我们在本文中将 ...

  2. 4.css基础

    1 Css概念 CSS 指层叠样式表 (Cascading Style Sheets)(级联样式表) Css是用来美化html标签的,相当于页面化妆. ◆样式表书写位置 2选择器 2.1 写法 选择器 ...

  3. 代码面试集锦 2 - Google

    Given the root to a binary tree, implement serialize(root), which serializes the tree into a string, ...

  4. python实现Telnet远程登陆到设备并执行命令

    #encoding=utf-8 import telnetlib import time def do_telnet(Host, username, password, finish, command ...

  5. Python 学习第一章

    学习内容如下: Python 介绍 Python 3 VS Python 2 软件的安装 第一个 Python 程序 变量与字符编码 用户输入与注释 一.Python 介绍 python的创始人为吉多 ...

  6. 【BZOJ3193】 [JLOI2013]地形生成

    BZOJ3193 [JLOI2013]地形生成 Solution 第一问不是很简单吗? 直接计数就好了. 第二问思考无果看了看hyj神仙的代码,发现可以dp求解. 具体可以看代码(其实主要是我说不清楚 ...

  7. 【文文殿下】[AH2017/HNOI2017]礼物

    题解 二项式展开,然后暴力FFT就好了.会发现有一个卷积与c无关,我们找一个最小的项就行了. Tips:记得要倍长其中一个数组,防止FFT出锅 代码如下: #include<bits/stdc+ ...

  8. 最小割(zjoi2011,bzoj2229)(最小割树)

    小白在图论课上学到了一个新的概念--最小割,下课后小白在笔记本上写下了如下这段话: "对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点\(s,t\)不在同一个部分中,则称 ...

  9. mysql多列索引

    1,数据库每次查询只能使用一个索引 2,假设数据 表T (a,b,c) rowid 为物理位置rowid a b c(1) 1 1 1(2) 2 1 13(3) 2 2 14(4) 1 3 3(5)  ...

  10. [ActionScript 3.0] 加载子swf需要指定应用程序域

    var ldr:Loader = new Loader(); ldr.load(new URLRequest("assets/test.swf")); 如上,如果在flash帧上写 ...