bash - 获取字符串的特定部分并将另一部分设置为 null
问题描述
希望你一切都好
我想获取我的字符串的子字符串,其格式为:18d6m2s 等等..我感兴趣的只是获取天数,如果字符串仅包含分钟/秒,我想获取 null 的值/零 ..
例子:
age=12d23m2s ... the needed output is 12
age=21m... the needed output is 0
age=22s... the needed output is 0
我的解决方案是使用 cut (我不能有一个单独的 bash 脚本,这将是另一个命令的输入..)..
我的解决方案:
awk -F "d" '{print $1}' $6
但这仅对带有 d 字符的字符串有效。我想将仅包含 m/s 的字符串设置为零/空。
我怎样才能做到这一点 ?
解决方案
您可以使用正则表达式:
if [[ $age =~ ([0-9]+)d ]]; then
echo "${BASH_REMATCH[1]}"
fi
封装成一个函数:
get_days() {
[[ $1 =~ ([0-9]+)d ]] && echo "${BASH_REMATCH[1]}" || echo 0
}
for age in 12d23m2s 21m 22s; do
days=$(get_days "$age")
echo "days in $age => $days"
done
days in 12d23m2s => 12
days in 21m => 0
days in 22s => 0
推荐阅读
- javascript - 从本地存储中获取用户信息 - getUser
- office365 - 逻辑应用使用服务帐户访问 Office 365 资源
- docker - Kubernetes ImagePullPolicy 不起作用
- angular - 错误类型错误:无法读取未定义的属性“数据”
- android - 将我的 unity 从 2018.4.0 升级到 2019.3.7,我现在无法构建 apk
- python-3.x - 将 Pygame 中的多个图像“合并”到一个 Surface 中以动态旋转它们
- project - 通量与间隔交错
- sql - 查询哪些文章包含一个标签并返回其他最常见标签的计数
- amazon-redshift - 将模式和表从 Redshift 复制到 RDS
- python - 按降序排序以下字典列表