bash - Linux shell:如何删除字符串中特定字符之前/之后的前导/尾随字符?
问题描述
案例场景:
$ 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 个尾随_
)将变为 just 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'
推荐阅读
- html - 表格中的背景颜色不显示空单元格
- python-3.x - Google App Engine 部署错误 [12] 无法分配内存
- html - 样式 css 输入文件 Firefox(也在 chrome 上工作)
- arrays - 试图从处于状态的数组中访问项目
- git - git push 说一切都是最新的,但它似乎不是
- azure-aks - 通过 jenkins 在 GitLab 中为每个分支/拉取请求动态创建 K8s (AKS) 命名空间
- html - 如何仅使 tbody 在具有动态列宽的表中垂直滚动
- java - 使用 pdfTron 创建带有参数 Inputstream 的 PDFDoc 的问题
- shell - TCL 脚本查找脚本并在搜索字符串之前添加新文本
- swift - SwiftUI - 如果在 ForEach 循环内