2016-12-29 7 views
-1

Как удалить префикс из строки в Bash?Bash заменить префикс пробелами

Например:

STRING1="My name is James" 
echo "${STRING1}" 
# My name is James 

NAME="${STRING1#???}" 
echo "${NAME}" 
# James 
+2

Что ваш вопрос? выглядит как сеанс Q/A внутри себя – Inian

+0

@Inian Существует возможность обмена знаниями. https://stackoverflow.blog/2011/07/its-ok-to-ask-and-answer-your-own-questions/ –

+0

Это прекрасно, его просто недостаточно подробное из того, что вы пытаетесь сделать, и как вы его решили, может быть, стоит добавить немного больше объяснений? Я не проголосовал за BTW – Inian

ответ

0

Альтернатива: FOO=${FOO//$WORDTOREMOVE/}

$ STRING1="My name is James" 
$ NAME="${STRING1//My name is /}" 
$ echo "${NAME}" 
James 

Дополнение за @ gniourf_gniourf-й предложение: FOO=${FOO/#$WORDTOREMOVE/}

$ NAME="${STRING1/#My name is /}" 
$ echo "${NAME}" 
James 
+1

Лучше написано как '" $ {string1/# Мое имя /} "': не нужно '//', и поскольку вопрос задает _prefix, _ лучше привязывайте его к '#'. –

0

Чтобы сделать это, вы должны экранировать специальные символы в строке префикса.

NAME="${STRING1#My\ name\ is\ }" 
echo "${NAME}" 
# James 

То же самое с достаточным количеством.

+1

О чем ты говоришь? почему вам нужно «убегать от специальных символов»? что произойдет, если вы этого не сделаете? –

+1

@gniourf_gniourf hm .. действительно. Я потратил около 30 минут на то, чтобы выяснить, почему «$ {STRING1 # My name is}» не работает. Поэтому лучше удалить вопрос. –

+0

@AndriiAbramov: Если у вас все еще есть проблема, не стесняйтесь публиковать его как правильный вопрос с необходимыми подробностями ввода и вывода проб. – Inian