【问题标题】:Trim string from string [duplicate]从字符串中修剪字符串[重复]
【发布时间】:2014-03-26 08:45:42
【问题描述】:

我想从变量$FILES 中修剪这个字符串/tmp/files/ 例如:

setenv FILES=/tmp/files/list
ONLY_L=`trim($FILES,'/tmp/files/')`
echo $ONLY_L
#should see only 'list'

我虽然在工作中使用sed,但它看起来有点“丑陋”,因为所有\ 都出现在/ 之前。

【问题讨论】:

  • setenvcsh 命令,而不是 bash 命令。

标签: regex linux bash sed


【解决方案1】:

对于sed,您不必使用/

例如,这也可以:

echo $FILES | sed 's#/tmp/files/##'

【讨论】:

    【解决方案2】:

    ONLY_L="${FILES##*/}"

    ONLY_L="$(basename "$FILES")"

    ONLY_L="$(echo "$FILES" | sed 's|.*/||')"

    做你想做的事

    【讨论】:

      【解决方案3】:

      您应该为此使用 basename 命令。它会自动删除路径并只留下文件名:

      basename /tmp/files/list
      

      输出:

      list
      

      【讨论】:

        【解决方案4】:

        您不需要sed 或调用工具。 bash 使用 string substitution 为您提供此功能。

        $ FILES='/tmp/files/list'
        
        # do this
        $ echo "${FILES/\/tmp\/files\/}"
        list
        
        # or this
        $ echo "${FILES##*/}"
        list 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-13
          • 1970-01-01
          • 2012-03-21
          • 2014-11-27
          • 2022-11-01
          • 1970-01-01
          相关资源
          最近更新 更多