Linux shell:如何在字符串中的特定字符之前/之后删除前导/尾随字符?

时间:2018-05-21 23:52:14

标签: bash shell replace

案例方案:

$ var="This is my ___ va__riable ___for___ num_ber ___45___"
$ echo $var
This is my ___ va__riable ___for___ the num_ber ___45___

我希望var 转换,以便___N___(3个引导_,任意数字和3个尾随_)变为N,这就是:只留下数字。

因此得到的var应为:

This is my ___ va__riable ___for___ the num_ber 45

请注意,只会删除围绕数字的3个连续_ 。剩下的就剩下了。

我怎么能这样做?

我的(弱)方法:

echo $var | sed 's/___[0-9]___/[0-9]/'

(我正在考虑sed用相同数字替换号码的某种方式,但我不知道是否可以使用sed完成此操作。

1 个答案:

答案 0 :(得分:3)

$ echo "$var" | sed 's/___\([0-9][0-9]*\)___/\1/g'

您还可以使用扩展正则表达式:

$ echo "$var" | sed -E 's/___([0-9]+)___/\1/g'