折叠重复字符

l0b*_*0b0 3 bash string replace

有没有比echo "$PWD//" | sed -e 's#//\+#/#g'用单个斜杠替换重复斜杠更 Bashist 的方法?

感谢Steven D,现在有一个完整的功能可以找到两个或多个路径最长公共路径path_common

Ste*_*n D 8

不是“仅限 Bash”的答案,但可能有用:

echo "$PWD///" | tr -s '/'
Run Code Online (Sandbox Code Playgroud)


Mat*_*Mat 5

可能在“纯 bash”中,但仅限于extglobactive。

$ shopt -s extglob
$ A="////qsd/////sdfgfg//qsd//////"
$ echo ${A//\/+(\/)/\/}
/qsd/sdfgfg/qsd/
Run Code Online (Sandbox Code Playgroud)