Удалить определенное слово в переменной

В сценарии bash , как я могу удалить слово из строки, слово будет храниться в переменной.

 FOO="CATS DOGS FISH MICE" WORDTOREMOVE="MICE" 

2 Solutions collect form web for “Удалить определенное слово в переменной”

Пытаться:

 $ printf '%s\n' "${FOO//$WORDTOREMOVE/}" CATS DOGS FISH 

Это также работает в ksh93 , mksh , zsh .


POSIXLY:

 FOO="CATS DOGS FISH MICE" WORDTOREMOVE="MICE" remove_word() ( set -f IFS=' ' s=$1 w=$2 set -- $1 for arg do shift [ "$arg" = "$w" ] && continue set -- "$@" "$arg" done printf '%s\n' "$*" ) remove_word "$FOO" "$WORDTOREMOVE" 

Предполагается, что ваши слова ограничены пространством и имеют побочный эффект, который удаляет пробелы до и после "$WORDTOREMOVE" .

Использование замены подстроки bash:

FOO = $ {FOO // $ WORDTOREMOVE /}

// заменяет все вхождения подстроки ($ WORDTOREMOVE) содержимым между / и}. В этом случае ничего.

Информацию об этом и других способах работы со строками в bash см. В разделе 10.1. Манипулирование строками расширенного руководства по созданию скриптов .

  • Используйте sed для извлечения переменной из 1 файла и поместите ее в другую
  • Что означает «$ {x %% *}» в sh?
  • Чтение переменных без bash из файла в скрипт bash
  • Установка переменной со значением по умолчанию ведет себя по-другому, если перед командой?
  • Невозможно выполнить сценарий Bash, если / while
  • Как я могу объединить переменную оболочки с другими другими параметрами в моих командных строках?
  • Bash: Назначение переменной не похоже на «stick»
  • как получить или отразить имя вызываемой функции bash?
  • Удерживать несколько пробелов, содержащих аргументы в одной переменной?
  • Передача переменной из одного сценария в другой
  • Shell: как использовать 2 переменные с условием
  • Linux и Unix - лучшая ОС в мире.