unix-shell – 用分隔符连接字符串的便携式unix方法

前端之家收集整理的这篇文章主要介绍了unix-shell – 用分隔符连接字符串的便携式unix方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否有一种可移植的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

>使用以下shell函数(根据此SO post):

join_by { local IFS="$1"; shift; echo "$*"; }

用法

$join_by '---' foo bar baz quux

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

> tr

echo foo bar baz quux | tr ' ' '-'

猜你在找的Bash相关文章