加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 18:30:33 所属栏目:安全 来源:网络整理
导读:是否有一种可移植的unix shellcriptpting方法,可以将多个字符串与给定的分隔符连接在一起,如下所示: $strjoin --- foo bar baz quuxfoo---bar---baz---quux 当然我可以在一个shellcript函数中使用$scripting_language单行或一个丑陋的显式循环,但旧的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 ' ' '-'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读