a[FNR]=a[FNR] ? a[FNR]","$0 : $0
Here ?
is a ternary operator. Where condition is just a[FNR]
. Where a
is an associative array.
It means if a[FNR]
is not empty and non-zero then set a[FNR] = a[FNR] "," $0
expression otherwise set a[FNR] = $0
.
In other words it is equivalent of:
if (a[FNR]) {
a[FNR] = a[FNR] "," $0
} else {
a[FNR] = $0
}
Correct approach is to use it this way as Ed rightly suggest in comments:
a[FNR] = (FNR in a ? a[FNR] "," : "") $0
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…