sed -> заменить фиксированный текст и скобки из строки - PullRequest
1 голос
/ 07 февраля 2020

Как привести это выражение

echo "ObjectId(5e257e424ed10b0015e3e780),'qwe',ObjectId(5e257e424ed10b0015e3e780),()"

к этому

5e257e424ed10b0015e3e780,'qwe',5e257e424ed10b0015e3e780,()

, используя sed?

Я использую это:

echo "ObjectId(5e257e424ed10b0015e3e780),'qwe',ObjectId(5e257e424ed10b0015e3e780),()" | \
   sed 's/ObjectId(\([a-z0-9]\)/\1/'

1 Ответ

4 голосов
/ 07 февраля 2020

Вы можете использовать

sed 's/ObjectId(\([[:alnum:]]*\))/\1/g'

См. онлайн-демонстрацию

Шаблон POSIX BRE означает:

  • ObjectId( - соответствует литеральной строке
  • \([[:alnum:]]*\) - группа 1: ноль или более alphanumeri c символов
  • ) - литерал ).

Замена \1 сохранит только значение группы 1.

Флаг g заменит все вхождения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...