Ошибка в awk для файлов слияния

У меня два файла:

File1

212 21 24.8 13.8354303 15.2841303 258 21 22.2 15.8507278 17.2994278 270 21 27.8 13.0482192 14.4969192 204 21 22.4 13.9465939 15.3952939 248 21 16.6 9.2714745 11.6494745 279 21 22.8 12.9151566 15.2931566 

File2

 212 21 24.8 1.03 2.8954 258 21 22.2 1.03 2.8954 270 21 27.8 1.05 2.9154 204 21 22.4 1.21 3.0754 248 21 16.6 1.29 3.1554 279 21 22.8 1.47 3.3354 

и я должен присоединиться к этому так:

 212 21 24.8 13.8354303 15.2841303 1.03 2.8954 258 21 22.2 15.8507278 17.2994278 1.03 2.8954 270 21 27.8 13.0482192 14.4969192 1.05 2.9154 204 21 22.4 13.9465939 15.3952939 1.21 3.0754 248 21 16.6 9.2714745 11.6494745 1.29 3.1554 279 21 22.8 12.9151566 15.2931566 1.47 3.3354 

но я использовал эту команду awk :

 awk 'NR==FNR{a[$1]=$4 FS $5;next}$1 in a{print $1,$2,$3,$4,$5,a[$1]}' File2 File1 > output 

и я получил этот файл:

вывод

 212 21 24.8 13.8354303 15.2841303 1.03 2.8954 258 21 22.2 15.8507278 17.2994278 1.03 2.8954 270 21 27.8 13.0482192 14.4969192 1.05 2.9154 204 21 22.4 13.9465939 15.3952939 1.21 3.0754 248 21 16.6 9.2714745 11.6494745 1.29 3.1554 279 21 22.8 12.9151566 15.2931566 1.47 3.3354 

Я новичок, и я не знаю, что я сделал не так, есть ли у кого-нибудь предложение? Заметка, мои файлы имеют около 400 строк. Большое спасибо!

2 Solutions collect form web for “Ошибка в awk для файлов слияния”

Предполагая, что данные отсортированы, для типа ситуации я бы использовал команду join

 join -o 1.1 1.2 1.3 1.4 1.5 2.4 2.5 file1.txt file2.txt 212 21 24.8 13.8354303 15.2841303 1.03 2.8954 258 21 22.2 15.8507278 17.2994278 1.03 2.8954 270 21 27.8 13.0482192 14.4969192 1.05 2.9154 204 21 22.4 13.9465939 15.3952939 1.21 3.0754 248 21 16.6 9.2714745 11.6494745 1.29 3.1554 279 21 22.8 12.9151566 15.2931566 1.47 3.3354 

Вы используете -o для установки формата в стиле xy где x – это файл, а y – это поле.

Обратите внимание, что для правильного результата соединения файлы file1 и file2 должны быть предварительно отсортированы по первому полю.
Если нет случая, и вы хотите сохранить заказ

 awk ' FNR==NR{a[$1]=$4 OFS $5; next} $1 in a{print $0, a[$1]} ' OFS='\t' file2 file1 
  • Awk: сравнить два файла
  • Соответствие двух файлов для аналогичной первой строки
  • слияние файлов и получение значений столбцов на основе поля id
  • Как распечатать все записи в файле 1, но обратите внимание на записи, которые не соответствуют файлу2?
  • Объединение двух таблиц, включая многократное появление идентификаторов столбцов
  • Сравнить столбцы из двух CSV и слить на совпадения
  • vlookup работать в awk на linux
  • Объединить столбцы с помощью awk? (Или другие предложения)
  • сопоставить столбцы и заменить
  • Разделить файл, сравнивая два поля в файлах
  • Объединение 2 файлов с использованием совпадения полей
  • Interesting Posts

    Создать номер строки / «индекс» в пределах диапазона от начального значения даты

    Почему не создается / dev / sda3?

    Где я могу предложить идеи разработки для рабочего стола Linux?

    Контроль Исходный размер xfce4-терминала?

    Разрешить не-суперпользователям монтировать любую файловую систему

    Выполнение задания Cron каждые 5 секунд

    "> / Dev / null 2> & 1" в выражении `if`

    Как сопоставить раскладку клавиатуры консоли с раскладкой клавиатуры X в Linux

    Как переключаться между рабочими пространствами в ubuntu

    Как найти, какие процессы занимают всю память?

    find -exec sed, чтобы найти / заменить строку многократного использования

    Можно ли запускать команды оболочки внутри zip-файлов?

    Создание процесса для чтения другого файла для одного и того же имени файла

    Просмотр части экрана в окне на Linux

    Mint + Kernel 4.5.4: ноутбук потерял состояние приостановки при отключении

    Linux и Unix - лучшая ОС в мире.