awk 中的“ records[rec] = (rec in records) ? records[rec] : func(rec) ”命令是什么意思?

awk 中的“ records[rec] = (rec in records) ? records[rec] : func(rec) ”命令是什么意思?

谁能告诉我这个表达式在 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]recrecords

相关内容