awk常用命令

awk:处理文本文件的上方宝剑!


awk基本命令格式

awk    ‘模式{操作}’       文件1  文件2  ……

模式:匹配

操作:print


模式:

模式是一种表达式。

BEGIN 和 END 是两个特殊的模式,BEGIN 在第一条记录被读取之前匹配,END 在最后一条记录处理完
之后匹配。



awk 的程序可以以两种方法来运行:

1. 直接命令行方式:
awk 'pattern-action statements' input file list
其中 “模式-动作” 语句必须括在单引号中。
2. awk 命令程序方式:
通常将 awk 程序放在一个单独的文本文件中,然后用 -f 选项来引用:
awk -f awk file input file list

其实应该以.awk作为文本文件,因为awk语法格式只有,awk文件能识别。

所以为了发挥其最大的功能,建议使用.awk文件来编写你的awk程序。


awk 的变量分为内部变量和用户定义的变量两种。

awk 的内部变量有:

FS:字段分割符

NF:当前记录中的字段数

NR:至今读取的记录数

OFS:输出字段分割符

ORS:输出记录分割符

RS:输入记录分割符



如果你想在该文件中查找某个特定的字符串:

awk '/需要查找的字符串/{print}‘ 文件名

结果将把该字符串所在行打印出来


awk  ‘ NR == 1,NR==3{print} ‘  file.txt     :打印file.txt文件的第一行到第三行的内容


awk  ’ ( NR==1) || (NR==3){print}‘ file.txt   :打印file.txt文件的第一行和第三行的内容


awk '/bash$/{print}' file.txt  :打印以bash结尾的行


awk 'NR==1,NR==5{print $1,$3}' file.txt :打印从第一行到第五行中第一个字符串和第三个字符串,字符串用空格隔开


awk -F":" {print $1,$3} file.txt  :打印所有行第一个和第三个字符串,字符串用‘:’隔开,参数-F":"的做哟你


打印语句会输出双引号里的内容:

awk -F":"  '{print "username:" $1,"\tuid:" $3}  /etc/passwd  显示所有的用户名和用户名的uid,形式如:username:dengcan   uid:1000

当然如果你只想查看dengcan这个用户,不如这样:

awk -F":" '/dengcan/{print "username:"$1,"\tuid:"$3}'   etc/passwd

注意:转意字符是用反斜线,如:\t


当然你为了显示更美观,可以打印当前的行数,不如这样做:

awk -F":"  '{print NR,"\tusername:" $1,"\tuid:" $3}'  passwd

注意:{操作}里所有要显示的内容,必须在最前面加print,上例中如果你这么写:

awk -F":"  '{NR,print "\tusername:" $1,"\tuid:" $3}'  passwd

就会报错!


printf的使用:

『引用』

{ printf("total pay for %ns is $%n.2f\n", $1, $2 * $3) }  //%s对应$1,%.2f对应$2*$3,%s表示输入字符串,%.2f表示输出数字保留小数点后2位
注意:printf不会自动换行,所以在双引号里需要加入换行转义符\n
n的含义是在n个字符宽度的字段中左对齐输出

我的第一个awk程序。。。
$ vim chuli.awk
#!bin/awk -f
{print $1}

注意:模式{动作}不需要用单引号扩起来,不然会报错
即‘{print $1}'是错误的!我一开始就是卡在这里!
也不用这么写:awk ... ...

第二个程序。。。
/^$/{print "this is a blank line"}
END {print "Hello World"}
注意:^$表示空行。 /^$/表示匹配空行。。。











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值