Как удалить цифры и дату после фразы с помощью команды sed? - PullRequest
0 голосов
/ 01 июля 2019

Следуя синтаксису, удалите все после определенной фразы:

s/\(.*\Build ID:.\).*/\1/g
s/\(.*\Build Date:.\).*/\1/g

Однако мне нужно обезопасить эту часть кода и удалить:

  • только 8 цифр числа дата / время после конкретной фразы
  • только дата и время (ГГГГ-ММ-ДД пробел ЧЧ: ММ: СС) после конкретной фразы

Введите:

Build ID: 14257823
Build Date: 2019-06-27 03:09:33

Выход:

Build ID:
Build Date:

Чтобы вырезать только 8 цифр и отметку времени, используйте:

s/[0-9]\{8\}//g s/[0-9]\{4\}\-[0-9]\{2\}\-[0-9]\{2\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//g

1 Ответ

0 голосов
/ 01 июля 2019

Вы можете использовать классы символов и квантификатор повторений.

Формат идентификатора сборки в вашем примере - [0-9]\{8\} (класс символов принимает все цифры и повторяет их 8 раз), а формат даты - [0-9]\{4\}\-[0-9]\{2\}\-[0-9]\{2\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}:

  • четыре цифры
  • дефис
  • две цифры
  • дефис
  • две цифры
  • пространство
  • две цифры
  • двоеточие
  • две цифры
  • двоеточие
  • две цифры

Это дает следующие регулярные выражения

s/\(.*Build ID:.\)[0-9]\{8\}/\1/g
s/\(.*Build Date:.\)[0-9]\{4\}\-[0-9]\{2\}\-[0-9]\{2\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}/\1/g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...