![awk 中的“ records[rec] = (rec in records) ? records[rec] : func(rec) ”命令是什么意思?](https://linux22.com/image/203874/awk%20%E4%B8%AD%E7%9A%84%E2%80%9C%20records%5Brec%5D%20%3D%20(rec%20in%20records)%20%3F%20records%5Brec%5D%20%3A%20func(rec)%20%E2%80%9D%E5%91%BD%E4%BB%A4%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%EF%BC%9F.png)
谁能告诉我这个表达式在 awk 中意味着什么?
records[rec] = (rec in records) ? records[rec] : func(rec)
答案1
rec in records
rec
如果已使用,则计算为真值作为关联数组中的索引records
,否则为假。
(rec in records) ? records[rec] : func(rec)
用途三元运算符,并评估为records[rec]
(rec
与in相关的值records
) 如果存在这样的值,或者func(rec)
否则的结果。
records[rec] = (rec in records) ? records[rec] : func(rec)
将结果存储在records[rec]
.
这相当于
if (!(rec in records)) records[rec] = func(rec)
但如果该值已经存在,则不进行赋值;IE,如果中不存在索引,则存储func(rec)
in的结果。records[rec]
rec
records