awk简单用法

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。

1、域分割符
awk 在没有使用-F 指定分割符的时候。默认以空格为分割符。
域分割 $0代表文本内容全文显示
$1 代表分割第一个域
$2 代表分割第二个域
依次类推....
awk -F: 分割符号为‘:‘
# cat /etc/passwd | awk -F: ‘{print $1,$2,}‘

2、域和记录
awk执行时浏览域标记为$1,$2...$n,这种方法称为域的标识

(1)、抽取域
# cat /etc/passwd | awk -F: ‘{print $1}‘

(2)、$0代表所有记录
# cat /etc/passwd | awk -F ‘{print $0}‘

(3)、单独打印记录
# cat /etc/passwd | awk -F: ‘{print $1,$4}‘

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

(5)
、打印信息尾
# cat /etc/passwd | awk -F: ‘BEGIN{print "This is system user"}{print $1}END{"print =================="}‘ | more

#cat passwd  | awk -F: ‘BEGIN{print "===================:"}{print "User Name: "$1}END{print "======================="}‘

3、awk中的正则表达式

(1)、匹配~
# cat /etc/passwd |awk ‘{if($1~/root/) print $0}‘

# cat /etc/passwd | awk ‘$0~/root/‘

(2)、精确匹配
# cat /etc/passwd | awk -F: ‘$1=="root"{print $0}‘

(3)、不匹配
# cat /etc/passwd | awk ‘$0 !~ /root/‘
# cat /etc/passwd |awk ‘{if($1!~/root/) print $0}‘
 
(4)、小于
# cat /etc/passwd | awk -F: ‘{if($3<200)print $3}‘

(5)、小于或等于
# cat /etc/passwd | awk -F: ‘{if($3<=200)print $3}‘

(6)、大于或者等于
# cat /etc/passwd | awk -F: ‘{if($3>500)print $3}‘   
# cat /etc/passwd | awk -F: ‘{if($3>=500)print $3}‘

(7)、匹配多个关键字
# cat /etc/passwd | awk -F: ‘$1~/(root|user)/‘

(8)、匹配行首
# cat /etc/passwd | awk -F: ‘$1~/^root/‘

(9)、 awk 使用 && ||

# 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
(1)NF和NR,$NF打印域最后
NF 浏览记录的域个数(统计列的段数)
NR 已读的记录数(记录列行号)
# cat /etc/passwd | awk -F: ‘{print NF}‘
# cat /etc/passwd | awk -F: ‘{print NF,NR}‘ 打印有几段并且输出每行的行号
# awk ‘{if(NR<10 && $1~/root/)print $1}‘ /etc/passwd   行号小于10的,使用$1匹配root关键字
# cat /etc/passwd | awk -F: ‘{print $NF}‘  打印每段的最后一段

5、AWK替换
gsub (r,s)在整个$0中用s替代r
# cat /etc/passwd | awk ‘gsub(/root/,"losbyday") {print $1}‘  将root替换成losbyday

更多戳这里:

AWK用法入门详解 : http://www.cnblogs.com/losbyday/p/5854707.html
awk命令详解二 :http://www.cnblogs.com/losbyday/p/5854725.html

时间: 2024-10-04 23:22:11

awk简单用法的相关文章

awk基本用法

RS,ORS,FS,OFS,NR,NF,$0,$n RS 输入的行分隔号 ORS 输出的行分隔号 FS 输入的列分隔号 OFS 输出的列分隔号 NR 行号 NF 尾列号 $0 表示所有列(整行) $n 表示第n列 例如: shell> cat aa 1 2 3 4 5 6 shell> awk 'BEGIN{ORS=",\n"}{print}' aa 1 2, 3 4, 5 6, RS反之 shell> awk 'BEGIN{ORS=",\n"}{

Linux sed 和 awk的用法

sed用法: 原文链接:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] 'command' 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自

AWK详细用法

awk非常的优秀,运行效率高,而且代码简单,对格式化的文本处理能力超强.基本上grep和sed能干的活awk全部都能干,而且干得更好. 先来一个很爽的例子:文件a,统计文件a的第一列中是浮点数的行的浮点数的平均值.用awk来实现只需要一句话就可以搞定(当然,这个东东用python也可以很轻松的实现,只是无论如何都得新建一个文件:别妄想用bash shell来做,那可是浮点数!!!)$cat a1.021 331#.ll   442.53 6ss    7awk 'BEGIN{total = 0;

awk基本用法(一)

awk从FILE中读取文件,并采用指定的分隔符(默认为空格),将其分为多个段,每一个段的内容都放在$n(n为数字)中.$0表示一整行的内容. awk的用法: awk 'PATTERN{ACTION}' FILE 说明: PATTERN:为匹配模式.如果没有PATTERN,则表示匹配所有. ACTION:对匹配的内容所执行的操作.最简单的ACTION为print 内置变量: NF:表示的是Number of Field,即字段个数.如果是$NF,则表示的是最后一个字段. 示例1: [[email 

iOS block-base 动画简单用法+关键帧动画设置线性变化速度的问题

本文转载至 http://www.tuicool.com/articles/aANBF3m 时间 2014-12-07 20:13:37  segmentfault-博客原文  http://segmentfault.com/blog/alan/1190000002411296 iOS的各种动画相漂亮,相信这是吸引很多人买iPhone的原因之一.不仅如此,这还是吸引我做iOS开发的一大原因,因为在iOS上给界面实现一些像样的动画实在是太轻松了! 这里就介绍一下iOS的block-based an

Android WIFI 简单用法

随着Wifi的普及,在开发App的时候对wifi的考虑越来越多了.例如程序的升级在wifi下可以省很多流量,在通信软件中的视频通话.可以实现高画质的传输等等,Android提供了WifiManager类来帮助开发者们管理Wifi.下面就简单来说一下WifiManager的简单用法把. 权限: 为了使用WfiManager 我们需要在Androidmanifest.xml 加入权限: //本例中使用了前两个.具体请按照需要添加权限. <uses-permission android:name=&quo

Android中资源文件中的字符串数组string-array简单用法

在Android中,用string-array是一种简单的提取XML资源文件数据的方法. 例子如下: 把相应的数据放到values文件夹的strings.xml文件里,或是其他自定义的xml中都可以,以下操作方法相同. <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="sports"> <item>足球<

awk简单实用功能

awk实用功能: (来自网友Stephen Liu) 和sed一样,awk也是逐行扫描文件的,从第一行到最后一行,寻找匹配特定模板的行,并在这些行上运行"选择"动作.如果一个模板没有指定动作,这些匹配的行就被显示在屏幕上.如果一个动作没有模板,所有被动作指定的行都被处理. awk的基本格式:/> awk 'pattern' filename/> awk '{action}' filename /> awk 'pattern {action}' filename [[e

expect简单用法

1 #!/usr/expect/bin/expect -f 2 3 4 set loginuser [lrange $argv 0 0] 5 set loginpass [lrange $argv 1 1] 6 set ipaddr [lrange $argv 2 2] 7 set port [lrange $argv 3 3] 8 set timeout [lrange $argv 4 4] 9 set from [lrange $argv 5 5] 10 set to [lrange $ar