linux:三剑客老大awk(简单用法)

概念说明: 模式识别和脚本编写
执行原理: 按行处理文件信息, 根据匹配条件信息, 完成相应操作动作
语法结构: awk [参数] ‘模式信息(条件) {动作}’ 文件信息
参数:
参数用途
-F指定列分隔符
-vvar=val 自定义变量赋值
-P(或–posix)支持{}
-f指定awk脚本文件
字段(列)
变量名含义
$1第一个字段
$2第二个字段
$3第三个字段
$NF最后一个字段
$0整行
NF每行字段数
FS输入字段分隔符
OFS输出字段分隔符
记录(行)
变量名含义
NR行号,记录的数 awk当前处理着的,记录的数
RS输入记录(行)分隔符
ORS输出时候的分隔符
FNR当前文件的读入记录号
创建环境:
cat >> awk_test.txt << EOF
Zhang  Dandan    41117397    :250:100:175
Zhang  Xiaoyu    390320151   :155:90:201
Meng   Feixue    80042789    :250:60:50
Wu     Waiwai    70271111    :250:80:75
Liu    Bingbing  41117483    :250:100:175
Wang   Xiaoai    3515064655  :50:95:135
Zi     Gege      1986787350  :250:168:200
Li     Youjiu    918391635   :175:75:300
Lao    Nanhai    918391635   :250:100:175	

显示xiaoyu的姓氏和ID号码

[root@yu zy]# awk 'NR==2{print $1,$3}'  awk_test.txt
Zhang 390320151

姓氏是zhang的人,显示他的第二次捐款金额及他的名字

[root@yu zy]# awk  '$1~/Zhang/' awk_test.txt 
Zhang  Dandan    41117397    :250:100:175
Zhang  Xiaoyu    390320151   :155:90:201

显示所有ID号码最后一位数字是1或5的人的全名

[root@yu zy]# awk '$3~/1$|5$/' awk_test.txt
Zhang  Xiaoyu    390320151   :155:90:201
Wu     Waiwai    70271111    :250:80:75
Wang   Xiaoai    3515064655  :50:95:135
Li     Youjiu    918391635   :175:75:300
Lao    Nanhai    918391635   :250:100:175

显示所有ID号码最后一位数字不是1或5的人的全名

[root@yu zy]# awk '$3!~/[15]$/{print $1,$2,$3}' awk_test.txt
Zhang Dandan 41117397
Meng Feixue 80042789
Liu Bingbing 41117483
Zi Gege 1986787350

显示Xiaoyu的捐款,每个捐款数值都有以$开头, 如$110$220$330

[root@yu zy]# awk '$2~/Xiaoyu/{gsub(/:/,"$",$NF);print $NF}' awk_test.txt 
$155$90$201

可以实现数值运算 — 计算器

[root@yu zy]# awk 'BEGIN{print 2+3}'
5
[root@yu zy]# awk 'BEGIN{print 2-3}'
-1
[root@yu zy]# awk 'BEGIN{print 2*3}'
6
[root@yu zy]#  awk 'BEGIN{print 2^3}'
8
[root@yu zy]# awk 'BEGIN{print 2/3}'
0.666667
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值