Sed删除字符串开头/结尾的重复字符和某些字符

时间:2010-02-12 15:46:38

标签: unix replace sed

我在寻求你对sed的帮助。我需要从字符串的开头和结尾删除重复的下划线和下划线。

例如:

  

echo '[Lorem] ~ ipsum *dolor* sit metus !!!' | sed 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._()-]/_/g'

产地: _Lorem____ipsum__dolor__sit_metus____

但我需要进一步将此字符串格式化为:Lorem_ipsum_dolor_sit_metus

换句话说,从字符串的开头和结尾删除任何下划线,并将多个连续的下划线符号减少为一个,最好使用另一个管道。

你知道怎么做吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

只需在{sed命令;s/__*/_/g;s/^_//;s/_$//之后添加g即可。

答案 1 :(得分:1)

您需要做的就是在括号表达式后添加“+”以消除多个下划线的运行。然后你可以删除开头和结尾的。此外,建议使用 ladenedge ,您可以使用字符类来缩短列表。

sed 's/[^[:alnum:].()-]\+/_/g;s/^_\(.*\)_$/\1/'