gpt4 book ai didi

regex - 在 bash 中使用正则表达式获取字符串的子串

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:41 24 4
gpt4 key购买 nike

我有一个字符串如下:

my-name-is-yes-111111.maybe.text.here?-34.34.34

我想使用正则表达式来捕获第一个 -[0-9] 实例之前的所有文本,因此在这种情况下我会得到:

my-name-is-yes

我要把它移植到 ansible,所以它必须使用 regexp 而不是 sed 或 awk 或类似的东西。

我已经使用 sed 来想出一些东西,但同样,我需要正则表达式:

echo $x | rev |cut -d. -f6 | rev | sed -e 's/-[0-9]*$//g'
my-name-is-yes

这里的问题是可能有比 . 6 我需要削减。

最佳答案

您可以使用 shell 参数扩展来解决您声明的测试用例。这是一个例子:

# var=my-name-is-yes-111111.maybe.text.here?-34.34.34
# echo ${var%%\-[0-9]*}
my-name-is-yes

如果你需要这是可变的,你可以分配扩展,即

var=my-name-is-yes-111111.maybe.text.here?-34.34.34
var2=${var%%\-[0-9]*}
echo $var2
my-name-is-yes

您甚至可以用扩展值覆盖您的第一个值,

var=my-name-is-yes-111111.maybe.text.here?-34.34.34
var=${var%%\-[0-9]*}
echo $var
my-name-is-yes

%%% 参数扩展运算符表示“从变量右侧删除匹配值”,而 %% 表示删除从右边开始的最大匹配。

还有 ### 参数扩展运算符,它们执行类似的功能,但是“从变量值的左侧删除匹配值。IHTH

关于regex - 在 bash 中使用正则表达式获取字符串的子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56605222/

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