변수에서 특정 단어 제거


23

A의 bash스크립트, 내가 문자열에서 단어를 제거하는 방법, 단어는 변수에 저장된다.

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

답변:


30

시험:

$ 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".


17

bash 서브 스트링 대체 사용 :

FOO = $ {FOO // $ WORDTOREMOVE /}

//는 부분 문자열 ($ WORDTOREMOVE)의 모든 항목을 /와} 사이의 내용으로 바꿉니다. 이 경우에는 아무것도 없습니다.

bash에서 문자열을 사용하는 이것과 다른 방법에 대한 정보는 10.1 절을 참조하십시오 . 조작 문자열고급 Bash 스크립팅 가이드 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.