替换shell变量中的字符

时间:2018-04-11 03:40:06

标签: bash shell sed grep tr

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

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

我想将最后一部分'风险'替换为'risk_unzip',就像这样

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

我试过这个

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

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

3 个答案:

答案 0 :(得分:2)

如果你正在使用bash:

api.doAsync().doAnotherAsync()...

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

risk

答案 1 :(得分:1)

尝试sed,如下所示: -

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

答案 2 :(得分:0)

以下内容对您有帮助。

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