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

Пожалуйста, помогите с сценарием оболочки следующего. Мне нужно подсчитать количество согласованных переменных на каждой полосе (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 }}; } 
  • Сценарии поиска с циклом for для разных переменных
  • Как имитировать трубку?
  • Как оболочка будет расширять включение в документ-документ?
  • Параллельные скрипты Python на удаленной машине
  • Как сделать OR grep (с разными настройками GREP_COLOR)
  • Разделить вход для другой команды и объединить результат
  • Преобразование данных вертикального массива в данные горизонтальных массивов
  • Установите выравнивание числовых столбцов при разделении данных
  • Как добавить верхний и нижний колонтитулы в плоский файл
  • В чем разница между вызовом скрипта perl через sh или perl
  • Есть ли способ отправить смс на мобильный номер с помощью сценария оболочки?
  • Linux и Unix - лучшая ОС в мире.