gpt4 book ai didi

linux - Bash - 获取两个字符之间的字符串

转载 作者:行者123 更新时间:2023-12-02 18:50:54 24 4
gpt4 key购买 nike

如何只在 bash 中获取两个特定字符之间的字符串 [不使用 grep 或 sed]

例如

input=hostname~web:sit

我想从上面的输入中提取web

${hostname#*~} 给我的输出为 web:sit,但我只需要输出中的 web

从另一个帖子可以看出

% 从 $var 的末尾开始, 直到 pattern。但不确定如何应用它。

请帮忙

最佳答案

bash 中使用 extglob,您可以一步完成此操作:

shopt -s extglob
input='hostname~web:sit'
echo "${input//@(*~|:*)/}"

web

此处 @(*~|:*) 匹配从开始到 ~ 字符的子字符串或从 : 到结束的子字符串。使用 // 我们将所有此类实例替换为空字符串。


还有一个sed解决方案:

sed -E 's/.*~([^:]+):.*/\1/' <<< "$input"

web

关于linux - Bash - 获取两个字符之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66787991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com