2

Например:

подать:

Tom:black
Lily:pink

файл б:

Tom:big
Kate:small

И, результат:

join -t: a1 a b

Получил:

Tom:black:big
Lily:pink

Но то, что я хочу, это:

Tom:black:big
Lily::pink

т.е. двоеточие в последней строке отсутствует, есть идеи?

2 ответа2

1

Такое поведение ожидается на man join:

   -a FILENUM
          print unpairable lines coming from file FILENUM, where FILENUM is 1 or 2, corresponding to FILE1 or FILE2

Вы можете сделать это в два прохода, как это:

join -t: a b && join -t: -v1 a b|sed 's/:/::/'

Или что-то вдоль этих линий.

1

Я думаю, вы бы хотели, чтобы поля находились в согласованном положении. Если это так, то один из них будет работать, используя только один вызов join и без sed:

$ join -t: -a1 -o 1.1,1.2,2.2 a b
Tom:black:big
Lily:pink:
$ join -t: -a1 -o 1.1,2.2,1.2 a b
Tom:big:black
Lily::pink

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .