замена sed в зависимости от окружения - PullRequest
0 голосов
/ 06 ноября 2018

Как мне заменить sed на файл, содержащий такие вещи, как f[3][2,3][4], который следует заменить на f[3][2,3]["string"][4]. Конечно, числа могут быть разными, и я хочу, чтобы произошла одна и та же замена. Здесь нам нужно дать полный шаблон, что-то вроде

f\[[0-9]*\]\[[0-9]*,[0-9]*\]

, чтобы выбрать правильную часть, но затем мне нужна замена, чтобы дать те же номера, которые были сопоставлены ранее (а также присоединение ["string"]). Каков наилучший способ сделать это?

1 Ответ

0 голосов
/ 06 ноября 2018

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

sed 's/\(f\[[0-9]*]\[[0-9]*,[0-9]*]\)\[\([0-9]*\)]/\1["string"][\2]/g'

Или

sed -E 's/(f\[[0-9]*]\[[0-9]*,[0-9]*])\[([0-9]*)]/\1["string"][\2]/g'

См. онлайн sed демо

В основном, захватите первую часть от f до третьего индекса и также запишите число в третьем индексе. Затем свяжите эти значения с \1 и \2 заполнителями из RHS.

Детали

  • (f\[[0-9]*]\[[0-9]*,[0-9]*]) (ERE, в BRE, (...) должен быть экранирован) - Группа 1 соответствует f[, 0+ цифр, ][, 0+ цифр, , и 0+ цифр, сопровождаемых ]
  • \[ - [
  • ([0-9]*) - Группа 2: 0+ цифр
  • ] - ] char.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...