사용자가 입력한 문자열을 다른 문자열로 바꾸기

사용자가 입력한 문자열을 다른 문자열로 바꾸기

그래서 나는 madlibs와 관련된 bash 프로그램을 작성하고 있는데, 예를 들어 단어의 첫 번째 발생을 대체하는 함수를 만들어야 합니다. 입력한 첫 번째 단어가 사과인 경우 이 함수를 사용하여 배로 바꿀 수 있습니다. Bash에서 이 문제를 어떻게 해결합니까? (배쉬에 아주 새로운)

function replaceFirst(){
#Code to go here 

}

"sed"에 대해 뭔가를 봤지만 제가 말했듯이 저는 여기에 처음 왔기 때문에 어떤 도움이라도 좋을 것 같습니다!

답변1

한 단어를 다른 단어로 바꾸려면 와 같은 외부 명령을 사용할 필요가 없습니다 sed. Bash 자체가 그 일을 할 수 있습니다.

function replace_first {
    local user_input="$1"
    local replace_with="$2"

    set -f -- $1
    local first_word="$1"

    echo "${user_input/#$first_word/$replace_with}"
}

# read user input
read -rp 'Enter some text: '

# sample usage
replace_first "$REPLY" Hello

set사용자가 입력한 첫 번째 단어에 쉽게 접근할 수 있도록 위치 매개변수를 재설정합니다. 이 -f옵션은 파일 이름 확장을 방지합니다. 또한 $1인용이 없다는 점도 참고하세요. 일반적으로 변수는 항상 인용해야 하지만 이 경우 토큰화가 필요합니다.

${parameter/#pattern/string}문자열의 첫 번째 단어만 바꿉니다. 이는 동일한 단어가 문자열의 다른 곳에 나타나는 것을 방지하기 위한 것입니다.

Bash는 다음에 대한 세부 정보를 제공합니다.쉘 매개변수 확장.

입력 텍스트가 이라고 가정합니다 Hi there. 출력은 다음과 같습니다.

$ Enter some text: Hi there
Hello there

관련 정보