Сравнить 2 столбца в 2 разных файлах

Мне нужно вычесть второй и третий столбцы между двумя файлами на основе первого столбца и не показывать строки с diff_column_2 (DIFF-IO) = diff_column_3 (DIFF-SELECT) = 0. Отмечая, что порядок может быть случайным, за исключением последней строки, которая существует в обоих файлах, и должна оставаться на END на выходе.

ref_file :

  testing 20 10 jobs 15 20 issues 0 1 work 15 25 Total 50 56 

head_file :

  testing 20 10 jobs 15 30 work 12 25 games 1 2 Total 48 67 

Желаемый результат:

 TABLE,REF-IO,HEAD-IO,DIFF-IO,REF-SELECT,HEAD-SELECT,DIFF-SELECT jobs,15,15,0,20,30,-10 work,15,12,3,25,25,0 games,0,1,-1,0,2,-2 issues,0,0,0,1,0,1 Total,50,48,2,56,67,-11 

One Solution collect form web for “Сравнить 2 столбца в 2 разных файлах”

 awk ' BEGIN { print "TABLE,REF-IO,HEAD-IO,DIFF-IO,REF-SELECT,HEAD-SELECT,DIFF-SELECT" OFS = ", " } FNR==NR { A[$1]=$2 B[$1]=$3 next } { if (!($1 in A)) { A[$1] = B[$1] = 0 } diff_io = $2 - A[$1] diff_sel= $3 - B[$1] C[$1] = 1 } diff_io || diff_sel { if (first) { print line } first = 1 line = $1 OFS $2 OFS A[$1] OFS diff_io OFS $3 OFS B[$1] OFS diff_sel } END { for (name in A) { if (!(name in C)) { print name, 0, A[name], -A[name], 0, B[name], -B[name] } } print line } ' head_file ref_file 

Для короткого ввода можно выполнить задачу через join :

 join -a1 -a2 -e0 <(sort head_file) <(sort ref_file) -o0,1.2,2.2,0,1.3,2.3 | awk ' BEGIN { print "TABLE,REF-IO,HEAD-IO,DIFF-IO,REF-SELECT,HEAD-SELECT,DIFF-SELECT" OFS = ", " } { $4=$2-$3 $7=$5-$6 } /Total/ { end=$0 next } $4!=0 || $7!=0; END { print end }' 
  • Записать журнал для ложной инструкции условия if, которая возвращает exit 2
  • Пакетный импорт файлов .sql
  • печать серии символов
  • Сценарий мониторинга для сервера redis
  • Выполнить удаленный сценарий с локальным значением параметра
  • Скрипт для автоматического запуска программ после перезапуска
  • Мне нужно сделать файл undeleteable, но разрешить его модификацию и переименование
  • Как увеличить колонку с помощью AWK
  • Считайте уникальные связанные значения в awk (или perl)
  • проанализировать действительно простую грамматику разметки со сценарием оболочки
  • Сквозной скрипт с шагом смещения
  • Как исключить список полных путей каталога в команде find в Solaris
  • Interesting Posts

    Как установить сетевой адаптер TP-LINK?

    Настольная среда может привести к сбою моего маршрутизатора, почему?

    отказ интернет-соединения без перезагрузки

    Сценарий, вызывающий ifconfig и службу openvpn, не будет работать, но если интерфейс уже работает, он работает

    mysql-server-5.5 неудовлетворенных зависимостей каждый раз при запуске apt-get

    dpkg: ошибка: 2 ожидаемые программы, не найденные в PATH или не исполняемые, не могут установить ничего

    Просмотр полных команд в выводе ps

    Ubuntu полный список доступных услуг

    Как настроить раскладку клавиатур, подключенных позже?

    Apache 2.4.6 VirtualHost Конфигурация DocumentRoot для SSL игнорируется

    Ожидайте подключения плагинов / подключаемых модулей Ethernet в Linux?

    Переместите установку FreeBSD на меньший HDD

    Эквивалент Unix / Linux для проверки обхода байпаса Windows

    Linux: позволяет пользователю прослушивать порт ниже 1024

    Мышь и клавиатура не работают в FreeBSD 9.0

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