у меня есть sort -g k9
команду на файл, который дает мне это в стандартном выводе Баша:Держите линии на основе соотношения между линиями
55.19 645 156 15 9 520 58 702 0.0 661
55.50 636 159 16 9 520 58 693 0.0 654
55.19 645 156 15 9 520 58 702 0.0 658
56.52 644 147 16 9 520 59 701 0.0 669
55.97 645 151 15 9 520 65 709 0.0 672
55.97 645 151 15 9 520 65 709 4e-124 674
28.32 671 301 32 1 507 48 702 3e-49 183
28.32 671 301 32 1 507 47 701 3e-49 183
31.40 516 247 24 86 507 196 698 1e-46 176
31.41 519 243 25 86 507 196 698 5e-46 175
27.72 588 290 26 19 481 98 675 2e-39 154
30.56 337 170 17 101 413 302 598 5e-20 96.3
30.56 337 170 17 101 413 302 598 8e-20 95.5
Я хотел бы сократить мои данные, основанные на 9-е колонка. Идея состояла бы в том, чтобы сравнить значение 9-го столбца в строке i, разделить его на значение 9-го столбца в строке i + 1, а если отношение равно 0 OR 0/0 OR> 1e- 50, строка i и i + 1 сохранены. Как только одно из этих условий не будет заполнено, прекратите чтение. Нужный результат будет:
55.19 645 156 15 9 520 58 702 0.0 661
55.50 636 159 16 9 520 58 693 0.0 654
55.19 645 156 15 9 520 58 702 0.0 658
56.52 644 147 16 9 520 59 701 0.0 669
55.97 645 151 15 9 520 65 709 0.0 672
55.97 645 151 15 9 520 65 709 4e-124 674
я могу получить этот вывод с head -n 6
, но это, очевидно, не исходя из условия на значения в 9-м столбце. Обратите внимание, что значения находятся в «научном» формате.
Я знаю, как сделать это в Python (написать стандартный вывод в файл, рассчитать коэффициенты и т.д.), но по причинам, товарных я бы предпочел оболочки на основе решения (с awk
или sort
, например), хотя я не знаю, возможно ли это. Спасибо за вашу помощь!