使用分隔符连接字符串的便携式 unix 方式

Jan*_*nis 11 unix-shell strings

是否有一种可移植的 unix shellscripting 方式将多个字符串与给定的分隔符连接在一起,如下所示:

$ strjoin --- foo bar baz quux
foo---bar---baz---quux
Run Code Online (Sandbox Code Playgroud)

当然我可以在 shellscript 函数中使用 $scripting_language 单行或丑陋的显式循环,但是老的 unix 黑客可能也有一些需要,所以有人做了这样一个我不知道的标准命令过去的某个地方,对吧?

编辑

sed方法在许多情况下当然是最简单的方法,但如果字符串可以包含空格,则它不起作用。许多其他答案也没有处理这个问题。除了$IFS处理空格(以及一般所有可能的字符)并且不需要编写完整循环的技巧之外,还有其他解决方案吗?

ken*_*orb 14

对于多字符长分隔符,您可以使用:

对于一个字符长的分隔符,您可以使用:

  • IFS 解决方案实际上不适用于多字符分隔符,只是将第一个字符作为分隔符并忽略其余部分:`join_by '---' foo bar baz quux` → `foo-bar-baz-quuz` (4认同)

vor*_*aq7 0

除了 @embobo 的评论(希望很快能成为答案)之外,perl还可以用于拆分连接任意字符串。这比使用更复杂sed,并且基于上面的示例将是重大的矫枉过正。