Как распечатать разделитель для всех полей в утилите соединения?

Например:

файл a:

Tom:black
Lily:pink

файл b:

Tom:big
Kate:small

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

join -t: a1 a b

Добрался:

Tom:black:big
Lily:pink

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

Tom:black:big
Lily::pink

т.е. двоеточие в последней строке отсутствует, какая-либо идея?

2
задан 14.11.2012, 20:34

2 ответа

Я думал бы, что Вы захотите, чтобы поля были в последовательном положении. Раз так затем один из них работал бы с помощью только одного вызова 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
1
ответ дан 09.01.2020, 03:30

Это поведение ожидается на 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
ответ дан 09.01.2020, 03:30

Теги

Похожие вопросы