Соединение, заполняя пропавших без вести значений ключа

Я собираюсь высказать некоторые предположения... vim не любит if( так попытка if ( это может быть просто вещью энергии все же.

Я думаю, что Ваша реальная проблема - то, что Вы звоните run_backup перед созданием его. поместите Ваш function перед Вашим if then else блок. оболочка должна знать о функциях, прежде чем она сможет использовать их. это верно для программирования в целом.

4
30.09.2015, 01:18
3 ответа

Какая реализация join Вы используете? С join (GNU coreutils) 5.97, Я могу использовать

[0 1021] ~/temp/jointest % join -a1 -a2 jointest1.txt jointest2.txt
a 1 10
b 2 11
c 12
d 4 13
e 5 

и "простые" работы соединения, также (но опускает c и e). Существует -e опция, которая, предположительно, позволяет Вам выбрать маркер для пустых полей, но это, кажется, повреждается в моей версии и только заполняет случай e, не случай c.

5
27.01.2020, 20:46
  • 1
    Мое плохое, просто пропустил руководство для опции -a. Опция -e становится безубыточным хуже для меня, ни заполнение, ни записи "e" ни "c". Моя версия join (GNU coreutils) 7.4. –  mbaitoff 21.03.2012, 11:31
  • 2
    @mbaitoff: Я могу вообразить журнал фиксации: "Фиксированное непоследовательное поведение для-e опции"... –  Ulrich Schwarz 21.03.2012, 12:09
  • 3
    Между прочим, где сообщить о той "ошибке", если это - ошибка действительно? –  mbaitoff 21.03.2012, 12:30
  • 4
    @mbaitoff: в странице справочника говорится: Сообщите об ошибках на <bug-coreutils@gnu.org>; но не ожидайте быстрый ответ, я предполагаю. –  Ulrich Schwarz 21.03.2012, 14:26

Попробуйте следующее:

> join -e- -a1 -a2 jointest1 -o 0 1.1 1.2 2.1 2.2 jointest2
a a 1 a 10
b b 2 b 11
c - - c 12
d d 4 d 13
e e 5 - -

или

> join -e- -a1 -a2 jointest1 -o 0 1.2 2.2 jointest2
a 1 10
b 2 11
c - 12
d 4 13
e 5 -

Я не уверен, возможно ли достигнуть того же без-o опции.-o опция говорит: сначала распечатайте объединяющее поле, затем поле № 2 из файла 1, затем поле 2 из файла 2. Довольно печальный необходимо знать, что формат файлов заставляет пустые поля работать.

8
27.01.2020, 20:46

Я написал инструмент Perl именно для этой проблемы ключа, значения:

Объединение правильных строк в пары: любое количество файлы . Он также доступен на GitHub .

Чтобы выполнить его, введите:

merge -k -e "-" jointest1.txt jointest2.txt
1
27.01.2020, 20:46

Теги

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