[英]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.