unix - sed 删除字符串开头/结尾处的重复字符和某些字符

标签 unix replace sed

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

例如:

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

生产: _Lorem____ipsum__dolor__sit_metus____

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

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

你知道如何做到这一点吗?

谢谢。

最佳答案

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

关于unix - sed 删除字符串开头/结尾处的重复字符和某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2252977/

相关文章:

mysql - SQL - 在数字上使用嵌套替换

c# - Visual Studio 2015 社区 - 正则表达式查找和替换

sql-server - 如何在SQL中提取方括号之间的文本

shell - sed:在基础和更新部分添加排除=postgres*

regex - 如何使用sed命令替换特定值

shell - 使用 --only-matching 在 OS X 上的 Grep 行为

unix - 在 '=' 之后使用 sed 返回值

将 unix 时间戳转换为 YYYY-MM-DD HH :MM:SS

c++ - linux bind 不创建套接字

bash - 如果文件名在 Bash 中有前缀,则在句点之前去除字符