首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多行串联成“特殊字符”-delimited字符串

将多行串联成“特殊字符”-delimited字符串
EN

Unix & Linux用户
提问于 2018-08-12 22:23:19
回答 2查看 1.7K关注 0票数 2

假设我有这些Bash命令:

代码语言:javascript
复制
$ sha="$(git log --all --format=format:%H -n 1 -- .npp.json)"
$ git branch  --contains "$sha" | tr -d " *"

现在,这可能会记录如下:

代码语言:javascript
复制
master
dev
remotes/origin/foo

我的问题是-是否有一些Bash实用程序可以为我连接所有输出,这样我就可以得到如下内容:

代码语言:javascript
复制
master:dev:remotes/origin/foo

该实用程序看起来可能如下:

代码语言:javascript
复制
$ git branch  --contains "$sha" | tr -d " *" | concat ":"

当然,最终的值需要被回放,所以它看起来可能是:

代码语言:javascript
复制
$ result="$(git branch  --contains "$sha" | tr -d " *" | concat ":")"
$ echo "$result"
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-08-12 22:34:03

如果你在问如何改变

代码语言:javascript
复制
master
dev
remotes/origin/foo

代码语言:javascript
复制
master:dev:remotes/origin/foo

那么,tr '\n' :将是经典的UNIXy方法。

至于裁剪一个可能的最终换行符,您可以首先通过$()将输出保存到一个变量,然后$()会删除它,或者您可以执行替换,将结果保存在一个变量中,然后执行variable=${variable%:}来修剪它最后的冒号。(有关更多选项,请参见https://stackoverflow.com/questions/1654021/how-can-i-delete-a-newline-if-it-is-the-last-character-in-a-file。)

票数 5
EN

Unix & Linux用户

发布于 2018-08-12 22:34:45

对于我的用例,分割空格字符是可行的,因为git分支不能包含空格字符。

所以我可以这么做:

代码语言:javascript
复制
git branch  --contains "$sha" | tr -d " *" | xargs

但是对于泛型解决方案,它将有助于控制分隔字符是什么,所以我并不认为上面使用的xargs是一个很好的泛型解决方案。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/462184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档