Chinaunix
标题:
awk 如何判断一个value是否在数组中
[打印本页]
作者:
wjldrogan
时间:
2013-01-29 01:07
标题:
awk 如何判断一个value是否在数组中
求助
awk -F"," 'BEGIN{s="1,2,7,8,21,19,13,14,15,22";split(s,a,",")} 这样子的数组a,我想判断value是否在数组中如何去做?
作者:
blackold
时间:
2013-01-29 06:39
本帖最后由 blackold 于 2013-01-29 07:03 编辑
回复
1#
wjldrogan
写个循环
for (i in a) if( a[i] == value) ...
复制代码
作者:
dn833
时间:
2013-01-29 07:01
二楼起的真早
作者:
bikong0411
时间:
2013-01-29 08:59
回复
3#
dn833
猫头鹰不睡觉的,哈哈
作者:
seesea2517
时间:
2013-01-29 09:22
回复
2#
blackold
in 就可以判断了:
[seesea@UC ~]$ awk -F"," 'BEGIN{s="1,2,7,8,21,19,13,14,15,22";split(s,a,","); print (1 in a) }'
1
[seesea@UC ~]$ awk -F"," 'BEGIN{s="1,2,7,8,21,19,13,14,15,22";split(s,a,","); print (1111 in a) }'
0
复制代码
作者:
blackold
时间:
2013-01-29 09:28
回复
5#
seesea2517
这个如何?
$ awk -F"," 'BEGIN{s="1,2,7,8,21,19,13,14,15,22";split(s,a,","); print (3 in a) }'
1
复制代码
作者:
seesea2517
时间:
2013-01-29 09:35
回复
6#
blackold
呃……原来要判断的是值啊,in 是对下标来做判断的。
嗯,那可以找另一个方案,如果 lz 的这个判断操作要经常用的话,就可以做一个以值为下标的数组来做判断,就省去写很多循环了~
作者:
blackold
时间:
2013-01-29 09:43
回复
7#
seesea2517
嗯,不知道新版本 awk 有没有把值转换为键的函数。
作者:
wjldrogan
时间:
2013-01-29 14:41
多谢,我准备用for循环判断下
回复
2#
blackold
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2