繁体   English   中英

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

[英]Linux shell: How can I remove leading/trailing characters before/after specific characters inside a string?

案例场景:

$ 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是否可以实现)。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM