Как генерировать или распечатать пропущенные последовательности?

У меня есть .txt файл с образцом как после,

010.123.32.0001
010.123.32.0021
010.123.33.0001
...
010.123.33.9991
010.123.32.9012
010.123.33.0005

Я должен получить (или в другой печати слова) те последовательности, которые не являются, существуют в моем файле, я просто думаю, чтобы генерировать файл со всеми существующими последовательностями и сделать grep или awk на нем для получения тех последовательностей, которые являются, существуют в fakeGeneratedAllSequences, но не в моем реальном файле с хватанием

grep -Fvf sequences.txt fakeGeneratedAllSequences > missedSequences

Но я ищу команду, если может стать легким, это пропустило последовательности, спасибо

2
задан 16 October 2016 в 18:35

1 ответ

Это должно сделать:

grep -xvFf file.txt <(printf '%s\n' 010.123.{32..33}.{0001..9999})
  • printf '%s\n' 010.123.{32..33}.{0001..9999} генерирует все возможные шаблоны (измените диапазоны для удовлетворения потребностей), расширение фигурной скобки, {start..end}, делает расширение диапазона здесь

  • , вывод подается grep как дескриптор файла, сделанный заменой процесса <()

grep опции:

  • -x делает целое соответствие строки
  • -v инвертирование соответствие
  • -F шаблон (шаблоны) обработок буквально, никакое расширение Regex не сделано
  • -f, берет входной набор (наборы) из файла после этого Примера опции

:

% cat file.txt
010.123.32.0001
010.123.32.0021
010.123.33.0001
010.123.33.9991
010.123.32.9012
010.123.33.0005

% grep -xFf file.txt <(printf '%s\n' 010.123.{32..33}.{0001..9999})
010.123.32.0001
010.123.32.0021
010.123.32.9012
010.123.33.0001
010.123.33.0005
010.123.33.9991

% grep -xvFf file.txt <(printf '%s\n' 010.123.{32..33}.{0001..9999})
010.123.32.0002
010.123.32.0003
010.123.32.0004
010.123.32.0005
010.123.32.0006
010.123.32.0007
010.123.32.0008
010.123.32.0009
010.123.32.0010
010.123.32.0011
<truncated>
2
ответ дан 2 December 2019 в 03:44

Другие вопросы по тегам:

Похожие вопросы: