【问题标题】:Using Bash to delete a bracket delimited substring from string variable使用 Bash 从字符串变量中删除括号分隔的子字符串
【发布时间】:2018-07-09 22:27:47
【问题描述】:

我在一个变量中有这个字符串:

strVar="Hello World [randomSubstring].zip"

我想提取[randomSubstring],括号内的子字符串可以是任何东西。

预期的结果必须是这样的:

echo "$strVar"
Hello World .zip

我尝试了几种 grep 和 awk 的组合,但没有成功,我使用的是 CentOS 7。

echo "Hello World [RNVE5Z].zip" | grep -oP '(?<=[).*(?=])'
echo "Hello World [RNVE5Z].zip" | awk -F"["" '{print $1}' | awk -F"]" '{print $2}' 

【问题讨论】:

标签: bash shell awk sed centos7


【解决方案1】:

仅限 Bash:

echo ${strVar/\[*\]/}

【讨论】:

    【解决方案2】:

    只需使用 bash 的子字符串操作:

    echo ${strVar/\[*\]/}
    

    我更喜欢它而不是对 sed 的外部调用,除非还有更多工作要做,为什么我仍然使用 sed:

    echo $strVar | sed 's/\[.*\]//'
    

    我认为 grep 没有优雅的解决方案,但可能是错误的。在 awk 我不是那么流利。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-16
      • 2016-04-19
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 2011-11-03
      相关资源
      最近更新 更多