bash - 从第二个字符读取直到第一次出现分隔符
问题描述
这就是我的变量名的样子:p123456_19100210720_linux-86-64
我正在尝试123456
使用变量扩展来获取变量。我能够p123456
使用变量扩展并在 first 之前阅读所有内容_
。
patchname="p123456_19100210720_linux-86-64"
echo ${patchname%%*_}
这输出p123456
. 有没有办法我只能得到123456
?
解决方案
使用正则表达式运算符会容易得多BASH
:
[[ $patchname =~ [0-9]+ ]] && echo "${BASH_REMATCH[0]}"
123456
使用替代解决方案extglob
:
shopt -s extglob
echo "${patchname//+([^0-9]|_*)/}"
123456
推荐阅读
- ios - 无法使用“Pods-Runner/Pods-Runner-frameworks.sh: Permission denied”错误构建 Flutter
- google-sheets - 在表格/Excel 上,当 X 列中第 9 行下方的所有单元格值向下移动时,我希望 Y 列中相同行中的单元格也向下移动?
- ios - LazyVGrid 部分标题在水平滚动视图中未按预期粘贴(PinnedView)
- python - 根据python中的索引名称计算一个系列的总和
- java - 创建一个算法来排列它们以形成最大可能的整数
- java - 如何访问转储在远程 JVM 上的 hprof 文件?
- java - Java线程之间的数据交换
- google-sheets - Google 表格将多个范围合并为一个范围
- mysql - 仅当列设置了值时才连接表?
- node.js - 如何为 freebsd 打包和更新 nodejs 应用程序?