首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Unix命令行上简洁和便携的“join”

在Unix命令行上简洁和便携的“join”
EN

Stack Overflow用户
提问于 2018-05-24 05:36:17
回答 2查看 0关注 0票数 0

如何将多行代码连接到一行中,使用分隔符代表换行符,并避免尾随分隔符,并且可以忽略空行?

例。考虑一个文本文件foo.txt,有三行:

代码语言:javascript
复制
foo
bar
baz

期望的输出是:

代码语言:javascript
复制
foo,bar,baz

我现在使用的命令:

代码语言:javascript
复制
tr '\n' ',' <foo.txt |sed 's/,$//g'

理想情况下,它会是这样的:

代码语言:javascript
复制
cat foo.txt |join ,

什么是:

  1. 最便携,简洁,可读的方式。
  2. 使用非标准的unix工具的最简洁的方式。
EN

回答 2

Stack Overflow用户

发布于 2018-05-24 14:16:57

paste是一个很好的方法来做到这一点:

代码语言:javascript
复制
paste -s -d","

这不会处理你提到的空行。为此,请先通过以下方式输入文字grep

代码语言:javascript
复制
grep -v '^$' | paste -s -d"," -
票数 0
EN

Stack Overflow用户

发布于 2018-05-24 15:35:33

这一sed行应该工作 -

sed -e :a -e 'N;s/\n/,/;ba' file

测试:

代码语言:javascript
复制
[jaypal:~/Temp] cat file
foo
bar
baz

[jaypal:~/Temp] sed -e :a -e 'N;s/\n/,/;ba' file
foo,bar,baz

要处理空行,可以删除空行并将其传送到上面的单行内容。

代码语言:javascript
复制
sed -e '/^$/d' file | sed -e :a -e 'N;s/\n/,/;ba'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001361

复制
相关文章

相似问题

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