Перевод команды awk - PullRequest
       70

Перевод команды awk

0 голосов
/ 06 августа 2020

Я пытаюсь понять значение этой строки:

command = 'awk \'' + '$9 == "'+gene+'" && $4 >= ' + str(min_count) + '\' ' + filename + ' > ' + filename + '.tmp.' + gene

gene, min_count, filename - параметры функции Может ли кто-нибудь объяснить цель этой команды?

1 Ответ

1 голос
/ 06 августа 2020

Выполнение указанной выше команды python приведет к команде bash:

awk '$9 == "$GENE" && $4 >= $MIN_COUNT' $FILENAME > $FILENAME.tmp.$GENE

Предполагается, что '$ XYZ' представляет значение python переменной 'XYZ'

Что подойдет:

  • Открыть файл $ filename для ввода
  • Открыть файл "$ filename.tmp. $ Gene" для вывода
  • Для каждой строки ввода
    • Проверить, равен ли 9-й аргумент $ gene
    • Проверить, если 4-й аргумент> = $ min_count
    • Если оба условия выполнены, вывести строку в выходной файл.

В качестве примечания, это будет более эффективно, чем меньше шифрование для выполнения следующего кода в python.

filename="..."
gene="..."
min_count=...
inp = open(filename, 'r')
out = open(filename + '.tmp.' + gene, 'w') ;
for line in inp.readline():
    l = line.split(' ')
    if l[8] == gene and int(l[3]) >= min_count:
        out.write(line)
inp.close()
out.close()

Код не тестировался, поскольку нет данных для проверки, должно быть достаточно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...