gpt4 book ai didi

regex - Bash-如何将非字母数字字符转换为 "_"

转载 作者:行者123 更新时间:2023-11-29 08:49:51 26 4
gpt4 key购买 nike

我正在尝试将用户输入存储在一个变量中并清理该变量,以便仅保留字母数字字符和其他一些字符(我的意思是 [a-zA-Z0-9-_])。

我试过使用它,但它并不详尽:

SERVICE_NAME=$(echo $SERVICE_NAME | tr A-Z a-z | tr ' ' _ | tr \' _ | tr \" _)

你对此有什么帮助吗?

最佳答案

Bash 的字符串替换是个好东西:${var//pat/rep}

val='Foo$%!*@BAR###baZ'
echo ${val//[^a-zA-Z_-]/_}
Foo_____BAR___baZ

一个小的解释:斜杠引入了一个搜索/替换,有点像在 sed 中(它只是分隔模式)。但是你使用一个斜杠来替换一个:

val='Foo$%!*@BAR###baZ'
echo ${val/[^a-zA-Z_-]/_}
Foo_%!*@BAR###baZ

两个斜杠//表示全部替换。不常见,但它有一定的逻辑,多个斜杠表示多个替换(请原谅我糟糕的英语)。

并注意 $ 是如何与变量分开的,但是很难以这种方式修改文字常量(这对于测试来说很好)。修改 $1 也不是一件容易的事,afaik。

关于regex - Bash-如何将非字母数字字符转换为 "_",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6361337/

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