airport -s -x returns truncated output
Building off of the idea of trying to match the BSSID and removing that to the end of the line, I came up with this:

airport -s \
| sed 's# ..:..:..:..:..:.. .*##g ; s#^ *##g ; 1,1d' \
| sort -u


The sed line is actually 3 part:


Match the BSSID by looking for 2 characters separated by colons, repeated 5 times, and then everything to the end of the line (.*)
Match from the beginning of the line (^) and then any number of spaces (.*)
Deleted the first line (1,1d) which has the header information we don't care about: "SSID BSSID RSSI CHANNEL HT CC SECURITY (auth/unicast/group)"


The sort -u line makes sure each SSID only shows up once.

Maybe it's not ideal, but it might be an option.

The only possible "gotcha" I can think of is that I think sometimes BSSIDs can be reduced to 1 character instead of 2 if the first character is a zero, but I'm not sure if airport does that, and none of the networks I have access to include a zero in them, so I can't test for it. Maybe someone who is better at regexes can suggest a better one that what I have.