1

У меня большой текстовый файл с более чем 75 миллионами записей. Каждая запись состоит из строковых токенов (атрибутов) и между каждым токеном есть символ табуляции. Это пример двух записей:

43    ao489fer809    abcdefghikl    1.41    0

81    ijfij03iuff    abcdefghikl e89rt904i3 094utofgimf    0.13    1

Таким образом, каждая запись состоит из 5 токенов (обратите внимание, что третий токен содержит символ пробела).

Теперь давайте предположим, что у меня есть строка "abcdefghikl", которую мы называем ключом. Я заинтересован в третьем токене. Поэтому я хочу сравнить ключ с третьим токеном и, если токен является именно ключом (и не просто содержит ключ в качестве моей второй записи), чтобы записать победную запись в новый файл. Любые идеи grep?

2 ответа2

3

Я бы использовал awk в этой ситуации

awk -F"\t" '$3 == "abcdefghikl" {print}' filename > outputfile

Где вы устанавливаете разделитель на вкладку, и печатаете только строки, где третий столбец соответствует ключу.

0

Grep

$ cat -v td
43      ao489fer809     abcdefghikl     1.41    0
81      ijfij03iuff     abcdefghikl e89rt904i3 094utofgimf      0.13    1

$ grep -P '\tabcdefghikl\t' td
43      ao489fer809     abcdefghikl     1.41    0

или если привередливы

$ grep -P '^[^\t]*\t[^\t]*\tabcdefghikl\t' td
43      ao489fer809     abcdefghikl     1.41    0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .