Использование СЭД:
$ echo "$string" | sed -e "s/^$prefix//" -e "s/$suffix$//"
o-wor
В SED команде, ^
символ совпадает с текстом, начиная с $prefix
и задней $
матчей текста заканчивая $suffix
.
Adrian Frühwirth делает несколько замечательных моментов в комментариях ниже, но sed
для этой цели может быть очень полезным. Тот факт, что содержимое префикса $ и $ суффикса интерпретируется sed, может быть либо хорошим, либо плохим - пока вы обращаете внимание, вы должны быть в порядке. Красота, вы можете сделать что-то вроде этого:
$ prefix='^.*ll'
$ suffix='ld$'
$ echo "$string" | sed -e "s/^$prefix//" -e "s/$suffix$//"
o-wor
, который может быть то, что вы хотите, и как любитель и более мощным, чем Баш подстановки переменных. Если вы помните, что с великой силой приходит большая ответственность (как говорит Спайдер), вы должны быть в порядке.
Быстрое введение в СЭД можно найти на http://evc-cit.info/cit052/sed_tutorial.html
записку относительно оболочки и ее использование строк:
Для конкретного примера, приведенного, следующий будет работать, а также:
$ echo $string | sed -e s/^$prefix// -e s/$suffix$//
... но только потому, что:
- эхо не все равно, как многие строки в списке аргументов, и
- Там нет пробелов в префикса $ и $ суффиксом
Это вообще хорошая практика, чтобы процитировать строку в командной строке, потому что даже если он содержит пробелы, то оно будет представлено к команде в качестве единственного аргумента. Мы приводим $ prefix и $ suffix по той же причине: каждая команда редактирования sed будет передана как одна строка. Мы используем двойные кавычки, потому что они допускают переменную интерполяцию; если бы мы использовали одинарные кавычки, команда sed получила бы литерал $prefix
и $suffix
, что, конечно же, не то, что мы хотели.
Обратите внимание, что использование одиночных кавычек при настройке переменных prefix
и suffix
. Мы, конечно, не хотим, чтобы что-то в строках интерпретировалось, поэтому мы приводим их отдельно, поэтому интерполяция не происходит. Опять же, это не обязательно в этом примере, но это очень хорошая привычка.
Посмотрите [Advanced Bash-Scripting Guide] (http://tldp.org/LDP/abs/html/string-manipulation.html) – tarrsalah
Будьте очень осторожны при подключении к так называемому расширенному руководству по написанию сценариев Bash; он содержит смесь хороших советов и ужасных. – tripleee