Например:
файл 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
т.е. двоеточие в последней строке отсутствует, какая-либо идея?
Я думал бы, что Вы захотите, чтобы поля были в последовательном положении. Раз так затем один из них работал бы с помощью только одного вызова 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
Это поведение ожидается на 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/:/::/'
или что-то вдоль тех строк.