awk の " records[rec] = (rec in records) ? records[rec] : func(rec) " コマンドとはどういう意味ですか?

awk の

この表現がawkで何を意味するのかを教えてくれる人はいますか?

records[rec] = (rec in records) ? records[rec] : func(rec)

ベストアンサー1

rec in records

rec使用される場合はtrueと評価されます。連想配列のインデックスとしてrecords、そうでなければ偽です。

(rec in records) ? records[rec] : func(rec)

使用三項演算子と、次のように評価されますrecords[rec]recに関連付けられた値records)そのような値が存在する場合、そうでfunc(rec)ない場合は結果です。

records[rec] = (rec in records) ? records[rec] : func(rec)

結果をに保存しますrecords[rec]

これは次のとおりです。

if (!(rec in records)) records[rec] = func(rec)

ただし、値がすでに存在する場合、割り当ては実行されません。つまり、インデックスが存在しない場合、func(rec)inの結果が格納されます。records[rec]recrecords

おすすめ記事