【问题标题】:Replace characters in shell variable替换shell变量中的字符
【发布时间】:2018-09-20 19:27:56
【问题描述】:

嗨,我有一个这样的 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' )"

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

【问题讨论】:

  • 您是否要替换路径中的最后一个目录,或者特别是路径中出现的单词 risk 或其他内容?替换总是“risk_unzip”还是基于被替换字符串的值?

标签: bash shell sed grep tr


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果你使用的是 bash:

    output=${input/risk/risk_input}
    

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

    output=${input%risk/}risk_input/
    

    【讨论】:

      【解决方案3】:

      以下内容可能对您有所帮助。

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

      【讨论】:

        猜你喜欢
        • 2021-09-28
        • 2012-11-02
        • 1970-01-01
        • 2011-10-26
        • 2023-01-11
        • 1970-01-01
        • 2014-01-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多