我是正则表达式中的Nooby,所以我对sed感到头疼。我需要帮助,将给定公司名称中的所有特殊字符替换为“-”。
因此,这是给定的字符串:
FML Finanzierungs- und Mobilien Leasing GmbH & Co. KG
我想要结果:
FML-Finanzierungs-und-Mobilien-Leasing-GmbH-&-Co-KG
我尝试了以下方法:
nr = $(echo "$name" | sed -e 's/ /-/g'))
所以用替换所有空格-
,但是用什么表达式替换其他空格呢?我通过Google进行的搜索不是很成功。
这取决于您认为是特殊字符的原因-之所以这样说,是因为您似乎是在考虑&
常规字符,但不是.
,这似乎有些奇怪。无论如何,我想像某种形式
nr=$(echo "$name" | sed 's/[^[:alnum:]&]\+/-/g')
会为您提供最好的服务。此处[^[:alnum:]&]
匹配不是字母数字或的任何字符&
,并[^[:alnum:]&]\+
匹配一个或多个此类字符的序列,因此该sed
调用将所有此类序列替换$name
为连字符。如果您认为其他字符是常规字符,则将它们添加到集合中。请注意,变音符号等的处理取决于您的区域设置。
另请注意,如果以连字符开头(可能会被解析为的选项),则echo
可能会造成麻烦,因此,如果您可以将自己束缚于,$name
echo
bash
nr=$(sed 's/[^[:alnum:]&]\+/-/g' <<< "$name")
可能会更强大。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句