У меня есть два файла, один с новой строкой список разделенной числовых идентификаторовпечать линии с матчем и следующей строкой, но только первым матчем, из файла строк
>cat list.txt
3342
232
...
и один с этими идентификаторами и некоторой последовательностью данные в строке после
>cat Seqeunce.txt
>600
ATCGCGG
>3342
ACTCGGTC
>232
TGTGCT
>3342
ACGCGGTC
Я хотел бы, чтобы напечатать все строки с спичкой ID и в следующей строке, но только в первый раз найдено совпадение. Таким образом, из пут будут:
> ...some code... list.txt Sequence.txt
>3342
ACTCGGTC
>232
TGTGCT
Обратите внимание, что только строка с первым появлением ID 3342, а в следующей строке, печатается
Я попытался с помощью Grep,
grep -f list.txt -A 1 -m 1 Sequence.txt
Но он не работал. Просто запуск grep -A 1 и -m 1 с фактическим идентификатором создавал то, что я хочу, но у меня есть тысячи идентификаторов и не могу запускать их вручную.
Это требует повторного сканирования sequence.txt для каждого идентификатора в list.txt. Если у вас есть тысячи и тысячи, вы будете уничтожать часы ожидания жесткого диска, чтобы закончить. Вы можете сделать это за 1 проход, если вы заранее знаете id (list.txt). Однако для этого вам нужен сценарий. Вы можете создать regex trie, используя инструмент [this] (http://www.regexformat.com/Dnl/_Samples/_Ternary_Tool%20 (Dictionary) /___txt/Q-words.txt), а затем сопоставить файл данных с ним. Результат мгновенный. – sln
Отличная точка. Если у вас действительно есть тысячи идентификаторов для поиска, вы должны использовать инструмент, подходящий для поиска ... вы могли бы сделать очень простую программу, где 'Sequence.txt' был прочитан в карте/хэш/ассоциативном массиве (независимо от того, какой язык называет их), а затем вы можете выполнять поиск быстро и легко. – dcsohl