подсчеты совпадений и несоответствий

Пожалуйста, помогите с сценарием оболочки следующего. Мне нужно подсчитать количество согласованных переменных на каждой полосе (col1) через выборки (col2). Например, поскольку все значения (col4) переменной lane1 1 по всем выборкам theree являются образцом, переменная 1 подсчитывается по согласованной переменной. Аналогично, переменные 2 и 3 полосы 2 противоречат друг другу.

lane1 sample1 variable1 ab lane1 sample2 variable1 ab lane1 sample3 variable1 ab lane1 sample1 variable2 cd lane1 sample2 variable2 cd lane1 sample3 variable2 cd lane1 sample1 variable3 gh lane1 sample2 variable3 ab lane1 sample3 variable3 gh lane2 sample1 variable1 ac lane2 sample2 variable1 ac lane2 sample3 variable1 ac lane2 sample1 variable2 gt lane2 sample2 variable2 gt lane2 sample3 variable2 ac lane2 sample1 variable3 ga lane2 sample2 variable3 ga lane2 sample3 variable3 ac 

Вывод

Количество согласованных и несогласованных переменных по всем трем образцам

  #Consistent #Inconsistent lane1 2 1 lane2 1 2 

One Solution collect form web for “подсчеты совпадений и несоответствий”

Решение Perl:

 #!/usr/bin/perl use warnings; use strict; use feature qw{ say }; my %values; while (<>) { next if /^$/; # Skip empty lines my ($lane, $sample, $var, $val) = split; die "Duplicate $lane $sample $var\n" if $values{$lane}{$var}{$val}{$sample}; $values{$lane}{$var}{$val}{$sample} = 1; } my %results; for my $lane (keys %values) { for my $var (keys %{ $values{$lane} }) { my $count = keys %{ $values{$lane}{$var} }; if (1 == $count) { ++$results{$lane}{consistent}; } else { ++$results{$lane}{inconsistent}; } } say join "\t", $lane, @{ $results{$lane} }{qw{ consistent inconsistent }}; } 
  • Как скопировать файлы изображений, имена которых не заканчиваются размером их разрешения?
  • Перенаправить скрипт stderr и stdout в файл, но сохранить stdout в tty?
  • Команда find и rm не подчиняется исключающему списку
  • Самый простой способ найти / заменить в файле с помощью списка?
  • Перенаправление вывода петли bash в файлы, зависящие от переменных
  • Как удалить файлы в одной папке, которая старше 60 дней в UNIX?
  • Запуск приложения X из сценария оболочки через системный таймер
  • Искать файлы ТОЛЬКО в подкаталоге
  • Создание дополнительного скрипта копирования и вставки
  • Проверка поддержки массива оболочкой
  • Чтобы посчитать количество совпадений в мега-строке быстро
  • Linux и Unix - лучшая ОС в мире.