替换 shell 变量中的字符

Replace characters in shell variable

嗨,我有一个像这样的 shell 变量

input="/local/1/hadoop/MISDATA1/Risk_Analytics/blocker/risk/"

我想像这样将最后一部分 'risk' 替换为 'risk_unzip'

/local/1/hadoop/MISDATA1/Risk_Analytics/blocker/risk_unzip/

我这样试过

output="$( echo -e "$input" | tr 'risk' 'risk_unzip' )"

不适合我。任何帮助将不胜感激。

以下可能对您有所帮助。

echo "$input" | awk -F"/" '$(NF-1)=="risk"{$(NF-1)="risk_unzip"} 1' OFS="/"

如果您正在使用 bash:

output=${input/risk/risk_input}

如果您希望它与任何 Posix shell 一起使用(在这种情况下,bash 标签不正确),但您知道 risk 是最后一个组件:

output=${input%risk/}risk_input/

尝试使用 sed,如下所示:-

input="/local/1/hadoop/MISDATA1/Risk_Analytics/blocker/risk/"
input=$(echo "$input" | sed 's/risk/risk_unzip/g')