Оболочка Linux: Как я могу удалить начальные / конечные символы до / после определенных символов внутри строки? - PullRequest
0 голосов
/ 22 мая 2018

Сценарий сценарий:

$ var="This is my ___ va__riable ___for___ num_ber ___45___"
$ echo $var
This is my ___ va__riable ___for___ the num_ber ___45___

Мне бы хотелось, чтобы var было преобразовано , чтобы ___N___ (3 ведущих _, любое числои 3 трейлинг _) станет просто N, это: просто оставьте номер.

Таким образом, полученное var должно быть:

This is my ___ va__riable ___for___ the num_ber 45

Обратите внимание, что удаляются только 3 последовательных _ , окружающих число .Остальные остались.

Как я могу это сделать?

Мой (слабый) подход:

echo $var | sed 's/___[0-9]___/[0-9]/'

(Я думал о том, как sed заменить число натот же номер, но я не знаю, можно ли это сделать с помощью sed).

1 Ответ

0 голосов
/ 22 мая 2018
$ echo "$var" | sed 's/___\([0-9][0-9]*\)___/\1/g'

Вы также можете использовать расширенные регулярные выражения:

$ echo "$var" | sed -E 's/___([0-9]+)___/\1/g'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...