gpt4 book ai didi

linux - 从 bash 脚本中的字符串中提取模式

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:14 28 4
gpt4 key购买 nike

bash 有点新。

我尝试过使用参数扩展、grep、sed 和 echo 来解决这个问题,但无法完全解决。

我试图在 bash 脚本中从 $PWD 中提取特定模式。

假设可能有多种完整路径:

/home/files/tmp8
/home/tmp28/essential
/home/tmp2/essential/log
/home/files/tmp10/executables
/tmp8/files/whatever/etc

在每种情况下,我都想提取包含“tmp”后跟 1 个或多个整数的任何字符串。

因此,在处理 $PWD 的每个实例中,它将返回“tmp8”、“tmp28”、“tmp2”等。

对于功能/运算符(operator)在解决此问题方面如何工作的解释也将不胜感激。

最佳答案

您可以在 bash 中使用正则表达式从任何路径字符串中提取模式。请参阅以下示例:

if [[ "$PWD" =~ ^.*(tmp[0-9]+).*$ ]]
then
printf "match: ${BASH_REMATCH[1]}\n"
else
printf "no match: $PWD\n"
fi

正则表达式在圆括号中定义了一个组。如果表达式与匹配组匹配(tmp 后面至少有一位数字),它将被 Bash 存储在数组 BASH_REMATCH 中。

关于linux - 从 bash 脚本中的字符串中提取模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41470654/

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