Множественное сопоставление столбцов и настройка с помощью awk

Альтернативу alsaequal, который я использовал в прошлом, называют normalize.

Нормализуйте инструмент для того, чтобы отрегулировать громкость звуковых файлов к стандартному уровню. Это полезно для вещей как создание и mp3 наборов смешанного CD, где различные уровни записи на различных альбомах могут заставить объем варьироваться значительно от песни до песни.

Примеры

$ normalize -a -10dBFS -b *.mp3

Ссылки

3
14.04.2019, 11:19
3 ответа
perl -lane 'sub flip { if ($_[0] eq "T") { "A" } elsif ($_[0] eq "A") { "T" } elsif ($_[0] eq "G") { "C" } elsif ($_[0] eq "C") { "G" } else { $_[0] } } if (!($F[1] eq $F[2] or $F[1] eq $F[3])) { $F[2] = flip($F[2]); $F[3] = flip($F[3]) } print "@F"' < input

Должно быть легко перенести обратно на awk , поскольку он не делает ничего особенного, но мне потребуется больше времени, чтобы разобраться.

3
27.01.2020, 21:12

В качестве альтернативы массиву, предложенному @steeldriver, вы можете определить функцию:

awk '
  BEGIN { FS == " +" }
  NR == 1 {print $0 }
  function CHANGE( F )
    {
      if ( F == "A" ) F = "T"
      else if ( F == "T" ) F = "A"
      else if ( F == "C" ) F = "G"
      else F = "C"
      return F
    }
  NR >= 2 {
    if ( $2 == $3 || $2 == $4 ) print $0
    else {
      $3=CHANGE($3)
      $4=CHANGE($4)
      printf "%5d%3s%3s%3s\n",$1,$2,$3,$4
    }
  }
' file 
1
27.01.2020, 21:12

Вы можете создать ассоциативный массив в качестве таблицы поиска для дополнений, например

awk '
  BEGIN {
    complement["A"]="T"; complement["T"]="A";
    complement["C"]="G"; complement["G"]="C";
  } 

  NR>1 && $3!=$2 && $4!=$2 {
    $3 = complement[$3]; 
    $4 = complement[$4];
  } 

  {
    print;
  }
' file
3
27.01.2020, 21:12

Теги

Похожие вопросы