是否有一种可移植的unix
shellcriptpting方法,可以将多个字符串与给定的分隔符连接在一起,如下所示:
$strjoin --- foo bar baz quux foo---bar---baz---quux
当然我可以在一个shellcript函数中使用$scripting_language单行或一个丑陋的显式循环,但旧的unix黑客可能也需要这个,所以有人制作了一个我不知道的标准命令在过去的某个地方,对吗?
编辑
在许多情况下,sed方法肯定是最简单的方法,但如果字符串可以包含空格则它不起作用.许多其他答案也没有处理.除了处理空格的$IFS技巧(以及一般所有可能的字符)之外是否有任何其他解决方案并且不需要编写完整的循环?
对于多字符长分隔符,您可以使用:
> sed(已经指出@Mark)
$echo foo bar baz quux | sed "s/ /---/g"
>前
$echo foo bar baz quux | ex +"s/ /---/gp" -cq! /dev/stdin $ex +"s/ /---/gp" -scq! <(echo foo bar baz quux)
> printf(但会显示额外的结束分隔符)
$printf "%s---" foo bar baz quux
join_by { local IFS="$1"; shift; echo "$*"; }
用法:
$join_by '---' foo bar baz quux
对于单字符长分隔符,您可以使用:
> tr
echo foo bar baz quux | tr ' ' '-'