你可以使用
printf "%s\n" ${my_array[@]} |
awk '{itemlen=length($0)}
NR%2==1 {
firstmaxlen = (itemlen > firstmaxlen) ? itemlen : firstmaxlen;
firsthalf=itemlen
}
NR%2==0 {
secondmaxlen = (itemlen > secondmaxlen) ? itemlen : secondmaxlen;
pairlen = (firsthalf + itemlen > pairlen ) ? firsthalf + itemlen : pairlen ;
}
END { printf ("maxcombo, maxfirst, maxsecond) = (%d, %d, %d)\n",
pairlen, firstmaxlen, secondmaxlen) }
'
在这种情况下,一个小函数可以提供帮助:
printf "%s\n" ${my_array[@]} |
awk 'function max(a,b) { return (a>b ? a : b) }
{itemlen=length($0)}
NR%2==1 {
firstmaxlen = max(itemlen, firstmaxlen);
firsthalf=itemlen
}
NR%2==0 {
secondmaxlen = max(itemlen, secondmaxlen);
pairlen = max(firsthalf + itemlen, pairlen);
}
END { printf ("maxcombo, maxfirst, maxsecond) = (%d, %d, %d)\n",
pairlen, firstmaxlen, secondmaxlen) }
'