bash / sed: обрезать первую и последнюю последовательность указанного символа - PullRequest
0 голосов
/ 28 марта 2019

1) Используя sed, как удалить всю последовательность двоеточий в конце и начале строки. Например, измените ":: trim ::: test ::" на "trim ::: test".

echo "::trim:::test::" | sed 's/:*//'

2) Как сделать то же самое, используя этот синтаксис:

test="::trim:::test::"
echo ${test%:}

1 Ответ

1 голос
/ 28 марта 2019

Начало строки соответствует ^, конец строки $ в sed:

sed 's/^:*\|:*$//g'

Расширения параметров # и % работают только на одном конце строки ине могут быть объединены, поэтому нам нужны две команды:

shopt -s extglob
test=${test##+(:)}
test=${test%%+(:)}

Опция extglob включает +(:), что соответствует :+ в регулярных выражениях, то есть соответствует: один или несколько раз.# и % удвоены, чтобы соответствовать жадно.

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