Добрый день! Вероятно, совсем простая задачка, решается многими способами, но я что-то пока не нашел подходящего.Входные данные:
есть файл txt, в нем, в том числе, есть строки вида >NC00001 (прочее из этих строк удалено sed -r 's/xxxxx.+//' ) файл.ext
Таких строк 5572 штуки (всего строк в файле существенно больше), т.е. имеем диапазон строк указанного вида >NC00001 - >NC05572, между которыми другие строки. Количество других строк между целевыми строками вида >NC00001 рандомное, но уменьшается к концу файла.Задача:
получить уникальные числа после константного тэга >NC, так чтобы строка вида >NC****** встечались только один раз в файле )Условия: 1) нужно чтобы в числовой части строки присутствовало не более одной цифры 0
2) В подстановке допустимы только цифры, не более 5-6 знаков(цифр) после >NC.
3) Могут быть в порядке возрастания
3) нужна проверка вхождения, т.е. что каждый из полученных идентификаторов уникален.
4) решить на bash, можно и pythonЧто нашел: если вместо 0000 тупо клеить какие-нибудь числа, с учетом количества строк,очевидно, возникают повторы.
Рассматриваю sed, rev, tac, seq, grep, uniq
Из любопытного, но пока не разобрался : cut -d'' -f1|sort|uniq-c|grep -Ev'^[[:space:]]+1[[:space:]]'
>[оверквотинг удален]
> 3) Могут быть
> в порядке возрастания
> 3) нужна проверка
> вхождения, т.е. что каждый из полученных идентификаторов уникален.
> 4) решить на
> bash, можно и python
> Что нашел: если вместо 0000 тупо клеить какие-нибудь числа, с учетом количества
> строк,очевидно, возникают повторы.
> Рассматриваю sed, rev, tac, seq, grep, uniq
> Из любопытного, но пока не разобрался : cut -d'' -f1|sort|uniq-c|grep -Ev'^[[:space:]]+1[[:space:]]'Написал говнокод генератора для подстановки в строки, но мне нужны 6-ти значные числа, а тут цифры только 1-9 судя по первой странице.
import random
f = open('randlist.txt', "w")
S = ""
D = (random.sample(range(321456, 879456), k=5675))
for i in D:
S = S + str(i)
f.write('\n'. join(S))
f.close()