підстановки рядків: усі події


13

Просте запитання, але я не можу знайти відповіді. zsh документація мене переповнює :-(

function z ()
{
  echo ${1:s/the/THE}
}

$ z thethethe
THEthethe

...

Як я можу змусити все "З" замінити на "THE", а не лише перше виникнення? З zsh це найпростіші речі, які здаються найскладнішими для пошуку прикладів.

Відповіді:


23

Це модифікатор розширення історії , тому додайте gмодифікатор безпосередньо перед цим s.

echo ${1:gs/the/THE}

Крім того, використовуйте синтаксис розширення параметрів, коли подвійний косий рядок означає глобальну заміну. У цьому випадку частина after s//є шаблоном підстановки, тоді як заміна розширення історії займає буквальний рядок.

echo ${1//the/THE}

6

Це має зробити цю роботу:

VARIABLE=thethethe
echo ${VARIABLE//the/THE}
THETHETHE

3

Тамяго, це повинно бути просто:

echo ${1//the/THE}

... подвійний нахил робить це, і ви не можете обдурити "" s "

BTW, я хотів би подякувати сайтам "StackExchange" за існуючі. З усіх мільйонів місць можна задати питання, але це, безумовно, найкращі - на них не лише майже завжди є відповіді, але ці відповіді незмінно найвищі.


1

// Працює ідеально, якщо ви лише намагаєтесь замінити певне слово на всі літери, а решту цього залишити недоторканим. Якщо ви намагаєтесь перетворити все у великі регістри, ви можете використовувати ": u" для змінної

SOME_ENV_VALUE='thethethe'
echo $SOME_ENV_VALUE:u // outputs: THETHETHE

Ви можете перевірити, які модифікатори доступні у посібнику з розширення та заміни zsh

man zshexpn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.