将用户输入的字符串替换为另一个字符串

将用户输入的字符串替换为另一个字符串

所以我正在 bash 中编写一个涉及 madlibs 的程序,并且我必须创建一个函数来替换例如单词的第一次出现。如果输入的第一个单词是 apple,我可以使用此函数将其替换为 pear。我将如何在 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

相关内容