Awk使用方法简介
==================AWK===================
AWK简介:awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入, 以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理;awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的
GNU版本。
(1)域分隔符:awk在没有使用-F指定分割符时,默认以空格为分割符;
域分割 $0代表文本内容全文显示;
$1 代表分割第一个域;
$2 代表分割第二个域;
......
awk -F: 分割符为‘:’
eg: cat /etc/passwd | awk -F: '{print $1,$2,}'

(2) 打印报告头:
eg: cat /etc/passwd | awk -F: 'BEGIN{print "This is system user"}{print $1}' | more

打印结尾:
eg: cat /etc/passwd | awk -F: 'BEGIN{print "This is system user"}{print $1}END{"=================="}' | more
cat /etc/passwd |awk -F: ‘BEGIN{print “===============”}{print $1}END{print “==========”}’ |more


(3) awk 中的正则表达式:
1>匹配 ~
eg: cat /etc/passwd |awk '{if($1~/root/) print $0}'
cat /etc/passwd |awk ‘$0~/root/’

2>精确匹配:
eg: cat /etc/passwd | awk -F: '$1=="root"{print $0}'

3> 不匹配:
eg: cat /etc/passwd |awk '{if($1!~/root/) print $0}'
cat /etc/passwd | awk '$0 !~ /root/'

4>小于,小于或等于:
eg: cat /etc/passwd | awk -F: '{if($3<200) print $3}'
cat /etc/passwd | awk -F: '{if($3<=200) print $3}'


5>大于,大于或等于:
eg: cat /etc/passwd | awk -F: '{if($3>500) print $3}'
cat /etc/passwd | awk -F: '{if($3>=500) print $3}'

6> 匹配多个关键字:
eg:
cat /etc/passwd | awk -F: '$1 ~ /(root|user)/ {print $0}'

7> 匹配行首:
eg: cat test |awk -F: ‘{if($1~/^root/) print $0}’
cat test |awk -F: ‘$1~/^root/ {print $0}’

8> awk 使用 && ||
eg: cat /etc/passwd | awk -F: '{if($1=="root" && $5=="root") print $0}'
cat /etc/passwd | awk -F: '{if($1=="root" || $1=="sfsdfdsfds") print $0}'

(4) awk 中的NF与NR:
NF:浏览记录的域的个数(统计列的段数)
NR:统计列的行号
eg: cat test |awk -F: ‘{print NF}’ 输出一共有多少列
cat test |awk -F: ‘{print NF,NR}’ 输出一共有多少列及其行号
cat test |awk -F: ‘{print NR,$0}’ 输出全部内容,并在其前输出行号
awk '{if(NR<10 && $1~/root/) print $1}' /etc/passwd 行号小于10的,使用$1匹配root关键字
cat /etc/passwd | awk -F: '{print $NF}' 打印每段的最后一段


(5)awk替换:
eg:cat /etc/passwd | awk 'gsub(/root/,"alvinzeng") ' 将文中所有的root替换成alvinzeng,并输出了所有匹配的行

Awk使用方法简介的更多相关文章
- gawk使用方法简介
转载:gawk 使用方法简介 - 简书 (jianshu.com) gawk 是最初 Unix 系统上 awk 程序的 GNU 版本.相对于作为流式编辑器的 sed 而言,它提供了更为强大的编程语言特 ...
- 网络神器Greasemonkey(油猴子)使用方法简介+脚本分享【转载】
推荐下,觉得这个方法有用, 今天艾薇百科来介绍一下功能强大的Greasemonkey,俗称"油猴子",Greasemonkey可以自由定制网页,实现你想要的各种功能.堪称" ...
- Redis Cluster搭建方法简介22211111
Redis Cluster搭建方法简介 (2013-05-29 17:08:57) 转载▼ Redis Cluster即Redis的分布式版本,将是Redis继支持Lua脚本之后的又一重磅 ...
- Monte Carlo方法简介(转载)
Monte Carlo方法简介(转载) 今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ...
- C#——Marshal.StructureToPtr方法简介
目录 MarshalStructureToPtr方法简介 功能及位置 语法 参数说明 异常 备注 举例 本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三 ...
- TabBarController创建及使用方法简介
TabBarController创建及使用方法简介 大致讲解一下TabBarController的创建过程: 首先,我们需要一些视图,如创建UIControllerView类型的view1,view2 ...
- delphi操作文本文件的方法简介
delphi操作文本文件的方法简介减小字体 增大字体 作者佚名来源不详发布时间2008-5-31 10:31:16发布人xuedelphi1 文件类型和标准过程 Delphi同Object ...
- iOS中常用的四种数据持久化方法简介
iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...
- jQuery的AJAX方法简介及与其他文件$符号冲突的解决办法
一.重要的jQuery AJAX方法简介 $.load(url) 从服务器载入数据 $.get(url,callback) 从服务器请求数据,并执行回调函数 $.post(url,data,callb ...
随机推荐
- linux下安装mysql后 sql区分大小写
Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1.用root登录,修改 /etc/my.cnf:2.在[mysqld]节点下,加入一行: lower_ ...
- JS的常用开发框架有哪些?
JS的开发框架有哪些? Yui-ext 基于Yahoo UI的扩展包yui-ext是具有cs风格的web用户界面组件,能实现复杂的Layou布局,界面效果可以和backbase比美,而且使用纯Java ...
- Webstorm2018破解笔记
参考链接: (1)https://www.jb51.net/softs/598714.html 过程步骤 (2)http://idea.lanyus.com/ IntelliJ IDEA 注册 ...
- django -- 自定义simpletag 和 filter
django中自定义simpletag,即使用自己定义的函数在html中处理数据. 步骤: 1.创建并注册app settings.py INSTALLED_APPS = [ 'django.cont ...
- ELK-Stack 最后一次全篇文档
简介: ELK-Stack 日志收集系统.最后一次全篇记录的笔记,之后关于 ELK 的笔记都将是片段型.针对性的. 环境介绍: ELK-Stack:192.168.1.25 ( Redis.LogS ...
- Spring、Springboot常用注解:@Qualifier(不定时更新)
1.@Qualifier 出现场景: 老项目中有多个实现类实现同一个接口时,或者一个项目中有多个数据源时,spring容器不知道该注入哪个实现类或者使用哪个数据源,该注解就派上用场. 1)多实现类实现 ...
- shell脚本里切换用户执行命令的注意事项
功能说明:用root用户执行一个脚本,脚本里需要切换到普通用户DT去执行其他命令,其中就用到了EOF,用法如下: #!/bin/bash su - DT<<EOF cd apache-to ...
- delphi 三层架构简单例子(经测试成功)
delphi 三层架构简单例子(经测试成功) 转载 2013年12月19日 09:48:57 1100 所谓三层: (1) 客户端 (2) 服务器端 (3) 数据库 在数据访问时,使得客户端必须通过服 ...
- 改bug的乐趣
一直以来,我都不喜欢改bug,不管是自己的,还是别人的.因为我不相信自己的代码会出现问题,一旦出现问题我就会觉得很难堪,因为我觉得我的代码没什么问题.然后我就不知道该怎么来解决这些问题. 最近这一两次 ...
- 验证码及密码加密在java中使用
package com.huawei.filter; import java.io.IOException; import javax.servlet.Filter;import javax.serv ...