#compdef join gjoin local args variant args=( '*-a+[print unpairable lines from specified file]:file number:(1 2)' '-e+[replace missing input fields with specified string]:replacement string' "(-1 -2)-j+[join on specified field for both files]:field number" '-o+[use specified output format]:format string' '-t+[use specified character as field separator]:separator' '*-v+[like -a, but suppress joined output lines]:file number:(1 2)' '(-j -1 -j1)'{-j1,-1+}'[join on specified field of first file]:field number' '(-j -2 -j2)'{-j2,-2+}'[join on specified field of second file]:field number' '1:file:_files' '2:file:_files' ) _pick_variant -r variant gnu=GNU $OSTYPE --version case $variant in gnu) args+=( '(-i --ignore-case)'{-i,--ignore-case}'[ignore differences in case when comparing fields]' '(-)--help[display help information]' '(-)--version[output version information]' '(--check-order --nocheck-order)'{--check-order,--nocheck-order} '--header[treat first line in each file as field headers]' '(-z --zero-terminated)'{-z,--zero-terminated}'[end lines with 0 byte, not newline]' ) ;; esac _arguments -s $args