awk -F"分隔符" "command" filename

awk -F":" '{print $1}' /etc/passwd

字段引用:

$1代表第一列;
$2代表第二列;
$0代表所有列。

内置变量:

FS  代表输入的分隔符,等同于-F
OFS  代表输出的分隔符
NF  代表字段数,因为NF是列数,所以$NF代表最后一列
NR  代表当前处理第几行

关系操作符:

==  等于
!=  不等于
>  大于
<  小于
>=  大于等于
<=  小于等于

逻辑操作符

&&  逻辑与,类似于shell的[ 条件1 -a 条件2 ]
||  逻辑或,类似于shell的[ 条件1 -0 条件2 ]
!  非

运算符

+ - * /
^或**  幂

awk可以运算浮点数

echo $[1.2*3]  #错误
echo | awk '{print 1.2*3}'  #正确

练习

截取所有开放监听的TCP协议端口号
netstat -ntl | awk 'NR>2 {print $4}' |awk -F: '{print $NF}' /etc/passwd文件
截取前五行的倒数第二列
awk -F: 'NR<=5 {print $(NF-1)}' /etc/passwd
打印第五行
awk -F: 'NR==5 {print $0}' /etc/passwd
打印第五行第五列
awk -F: 'NR==5 {print $5}' /etc/passwd
awk -F: '{if (NR==5) print $5}' /etc/passwd
打印第五行和第六行
awk -F: 'NR==5 || NR==6 {print $0}' /etc/passwd
awk -F: 'NR>=5 && NR<=6 {print $0}' /etc/passwd
打印每行的列数
awk -F: '{print "第"NR"行有"NF"列"}' /etc/passwd
打印奇数行,并加上行号
awk 'NR%2==1 {print NR,$0}' /etc/passwd 截取IP地址,-F后[.:]表示以.或:做分隔符
ifconfig |grep Bcast|awk -F[.:] '{print $2}'

时间可以直接比较

cat test.txt
A 2016-11-15 19:20:12
B 2016-11-15 18:12:31
C 2016-11-15 17:58:59 找出18:30之前的记录
awk '$3<"18:30:00" {print $0}' test.txt 注:时间必须写成09:00:00,不能写成9:00:00

BEGIN和END

awk -F: 'BEGIN{处理文件前执行的代码块,可以用于赋值或者打印首行表头} {处理文件过程中的代码块,行处理} END{处理文件后的代码块}' file

printf格式化输出

%s    代表字符串
%d 代表十进制数字 ls -l /etc |awk 'NR>1 {print $5,$NF}'
ls -l /etc |awk 'NR>1 {printf("%d %s\n",$5,$NF)}' 结果同上
ls -l /etc |awk 'NR>1 {printf("%4d %s\n",$5,$NF)}' $5保留4位
ls -l /etc |awk 'NR>1 {printf("%04d %s\n",$5,$NF)}' $5保留4位,不足4位用0补齐

字符匹配

== 完全精确匹配
~ 匹配
!~ 不匹配
!= 不相等 awk -F: '$1=="root" {print $0}' /etc/passwd
awk -F: '$1~"oo" {print $0}' /etc/passwd
awk -F: '$1!~"oo" {print $0}' /etc/passwd
 

字符串函数

长度函数length()
echo 12345| wc -L
echo 12345| awk '{print length($0)}' 大小写转换
toupper() 转大写
tolower() 转小写
awk -F: '{print tolower(toupper($1))}' /etc/passwd 位置函数index()
awk '$0~"ss" {print index()$0,"ss"}' /etc/passwd
算出ss在那一行的字符位置 截取函数substr()
awk -F: '{print substr($1,1,2)}' /etc/passwd
把$1从第一个字符起,截取2个字符 echo 123456789ss987654321 | awk '{print substr($0,index($0,"ss"),4)}'
结果:ss98

shell——awk的更多相关文章

  1. Shell awk文本处理,shell脚本编写

    Shell awk文本处理,shell脚本编写 一:内容包含awk.变量.运算符.if多分支 <a>语法糖: awk [options] 'commands' files option - ...

  2. shell awk入门

    本文参考自 http://www.cnblogs.com/zhuyp1015/archive/2012/07/11/2586985.html awk:好用的数据处理工具 awk 也是一个非常棒的数据处 ...

  3. linux shell awk 流程控制语句(if,for,while,do)详细介绍

    在linux awk的 while.do-while和for语句中允许使用break,continue语句来控制流程走向,也允许使用exit这样的语句来退出.break中断当前正在执行的循环并跳到循环 ...

  4. 转 shell awk 使用详解

    awk简介 awk: 中文意思是报告生成器 能够根据我们输入的信息,将信息格式化以后显示,将定义好的信息以比较美观(直观)的方式显示出来出现比较早,继而出现了new awk(nawk)在windows ...

  5. [转]shell awk 入门,中级,高级使用

    awk很常用,对于我们在shell中分析log和file很有好处,很实用的东西,大家一起分享学习- 作为技术支持工程师,我们最最经常的工作就是要处理文本文件,不管是什么数据库最后都可以导成文本,我们就 ...

  6. [转]shell awk sed tr grep 语法汇总

    tr 基本语法 -c          # 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII  -d          # 删除字符串1中所有输入字符  -s          # 删除所 ...

  7. [SHELL]awk的用法举例

    从初学awk到现在小有所成,非常感谢CUers的帮助,总结了下自己曾经遇到的问题和犯的错误,供初学者借鉴,因本人非计算机专业,对专业词汇可能有表述不对的地方,还请指正和补充! 1. awk '{cod ...

  8. Linux shell awk数组使用

    awk中使用数组 一.数组格式 数组是一个包含一系列元素的表. 格式如下:     abc[1]="xiaohong"     abc[2]="xiaolan" ...

  9. Linux shell awk模式使用

    awk的PATTERN表示方法: 1,正则表达式,格式为/regex/ 以冒号为分隔符,显示/etc/passwd以r开头的行的第一段 [root@wei awk]# awk -F: '/^r/{pr ...

随机推荐

  1. Centos6.5中安装和配置vsftp详细总结

    一.vsftp安装篇 #查看是否安装:rpm -qa|grep vsftpd#卸载vsftpdrpm -e vsftpd-2.2.2-11.el6_3.1x86_64 --nodeps# 安装vsft ...

  2. js变量声明作用域问题

    1.先来看两个题 var a = 1; foo1(); function foo1(){ console.log(a); //输出1 }; foo2(); var a = 1; function fo ...

  3. 【JS】javascript 正则表达式 大全 总结

    javascript 正则表达式 大全 总结 参考整理了一些javascript正则表达式 目的一:自我复习归纳总结 目的二:共享方便大家搜索 微信:wixf150 验证数字:^[0-9]*$ 验证n ...

  4. 前端学HTTP之URL

    × 目录 [1]URI [2]URL语法 [3]字符[4]编码方法 前面的话 一般地,URL和URI比较难以区分.接下来,本文以区分URL和URI为引子,详细介绍URL的用法 URI与URL的区别 U ...

  5. 深入分析Spring 与 Spring MVC容器

    1 Spring MVC WEB配置 Spring Framework本身没有Web功能,Spring MVC使用WebApplicationContext类扩展ApplicationContext, ...

  6. 【Big Data】HADOOP集群的配置(二)

    Hadoop集群的配置(二) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...

  7. Windows Live Writer 在线安装失败的解决方法。

    这里提供一种解决方法:下载离线安装包,我这个版本是2011的.大家有兴趣的话可以下载一下: http://wl.dlservice.microsoft.com/download/8/3/D/83D75 ...

  8. Java正则速成秘籍(一)之招式篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

  9. 介介介是一个ORM

    介个是一个ORM,介个ORM基于Dapper扩展. 为什么需要一个ORM呢? 支持简单的LINQ查询 但是不能连表查询,why?why?why?为什么不能连接查询 ^.^ ok.但是就是不支持.哈哈哈 ...

  10. 深入理解JavaScript——闭包

    跟很多新手一样我也是初入前端,对闭包的理解花费的时间和精力相当的多.效果也还行,今天我就来根据自己的理解细致的讲一讲闭包,由于是初入学习的时候不免有一些弯路和困惑,我想信这也是很多跟我一样的人会同样遇 ...