Сравнить 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 }' 
  • Принимая аргументы оболочки и обновляя значения
  • Написание сценария bash в новом окне, Escaping Code
  • Горячая клавиша LXDE для запуска приложения или переключения на него, если он уже запущен
  • Как выбрать имена файлов с последовательными числовыми суффиксами?
  • Я хочу разделить сумму чисел на значение
  • apt-get install без приглашения debconf
  • Как переместить файл рекурсивно на основе размера и структуры
  • ksh не может cp из местоположения с пространством в нем?
  • Перезапустите локальный скрипт из URL-адреса, доступного исходному коду?
  • Скритичные разделы GPT с использованием разделенных
  • Как выполнить команды Netscaler через удаленную машину через SSH-соединение
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.