【发布时间】:2021-03-25 13:23:25
【问题描述】:
如何获取两个特定字符之间的字符串,仅在 bash 中 [不使用 grep 或 sed]
例如
input=hostname~web:sit
我想从上面的输入中提取web
${hostname#*~} 给我的输出为web:sit,但我只需要输出中的web
从另一个帖子我可以看到
% strips from end of $var, 最多模式。但不知道如何应用。
请帮忙
【问题讨论】:
-
试试
sed -E 's/.*~([^:]+):.*/\1/' <<< "$input" -
awk -F '[~:]' '{print $2}' <<< "$input" -
@0stone0:这似乎不太正确,因为那是
grep的具体问题,而 OP 想在bash本身中执行此操作。 -
在您的答案下方有一个仅限 bash 的解决方案。不使用 extglob,但问题还是一样?
-
No questions cannot be same as other question is specific ask using grep