Dear Maintainer, Given $ cat f1 b row1 f1 1 row1 f1 11 urow1 f1 2 $ cat f2 a row1 f2 1 row1 f2 11 urow2 f2 2 $ join f? -e sus -o 0,1.1,1.2,1.3,2.1,2.2,2.3 -t ' ' sus sus sus sus sus sus sus sus sus sus sus sus a sus sus sus b sus sus sus sus sus sus b sus sus a sus row1 row1 f1 1 row1 f2 1 row1 row1 f1 1 row1 f2 11 row1 row1 f1 11 row1 f2 1 row1 row1 f1 11 row1 f2 11 The first two rows of f? have an empty field 1. The first row has no field 2, and the second row has field 2 of "a"/"b". Compare FreeBSD join $ join -e sus -o 0,1.1,1.2,1.3,2.1,2.2,2.3 -t ' ' f? sus sus sus sus sus sus a sus b sus sus sus b sus a sus row1 row1 f1 1 row1 f2 1 row1 row1 f1 1 row1 f2 11 row1 row1 f1 11 row1 f2 1 row1 row1 f1 11 row1 f2 11 which correctly distinguished the empty field from a missing one.