请教awk数组用法,a[$0]是什么?

kingsu
请教awk数组用法,a[$0]是什么?

看到比较文件的时候经常 NR==FNR{a[$0]} NR>FNR{($1 in a)...............

但是我单独 a[$0];print a[$0] 发现打印的全部是空行啊。。。。。。。。。。。

到底什么意思呢?

古道西风
关注,还真不知道

davistar
用$0 做hash a的key , 没有value 打印出来当然是空了

aboy11
$0只是作为a数组的下标,没有给赋值,当然打印出来是空值了...

kingsu
回复 #3 davistar 的帖子

但是NR>FNR的是后这个 $1 in a 还有什么意义呢? a不是都是空了麽。。。。
主要是这个疑问。。。

davistar
你贴的代码不完整。。

首先使用hash是要赋值的,不然没有意思
其次 awk 使用 for(i in hash) 的方式对hash(数组)的元素进行迭代。从而得到其key(i) 和 value(hash[i])

jinl
[quote]原帖由 [i]kingsu[/i] 于 2008-6-20 10:38 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8625314&ptid=1165236][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
但是NR>FNR的是后这个 $1 in a 还有什么意义呢? a不是都是空了麽。。。。
主要是这个疑问。。。 [/quote]
[code]
这里a数组不为空,只是每个数组元素的值是空,也就是说a[i]的值是空的
for ( i in a) ...如果只是关心i的值来后续处理,那就无所谓a[i]是否为空了
[/code]

kingsu
如过 cat a.txt
111 222 333
aaa bbb ccc
a[$0]以后,数组a的hash 关键字都是什么呢?是每一行么?

111 222 333 -> null
aaa bbb ccc -> null


waker
[url]http://phi.sinica.edu.tw/aspac/reports/94/94011/ch4.html[/url]

基础12篇和新手导航没看好

kingsu
回复 #9 waker 的帖子

所言极是!

其实如果看好了置顶的资料,shell 版将减少80%以上的问题。。。

我再好好学习学习。。。