You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sed将多行内容合并为单行并以逗号分隔?

用sed实现多行转逗号分隔单行的方法

sed默认是逐行处理文本,每次只会把一行内容读入「模式空间」,并且会自动去掉行尾的换行符,所以你直接用s/\n/,/g找不到匹配项,而s/$/,/g也只能给每行末尾加逗号,没法合并成单行。

要实现把所有行合并为逗号分隔的单行,纯sed的解决方案可以用下面的命令:

sed ':a;N;$!ba;s/\n/,/g' test

命令解释:

  • :a:定义一个名为a的标签,用于跳转循环
  • N:将下一行内容追加到当前模式空间,两行之间会保留换行符
  • $!ba:如果当前行不是最后一行($!),就跳转到标签a继续执行,直到把所有行都读入模式空间
  • s/\n/,/g:把模式空间里所有的换行符替换成逗号

执行后得到的结果是:

test1,test2,test3,test4,test5

如果想要和vi命令执行后一样,末尾也带逗号,可以调整命令为:

sed ':a;N;$!ba;s/\n/,/g;s/$/,/' test

执行结果:

test1,test2,test3,test4,test5,

另外也可以结合tr工具简化操作(虽非纯sed,但更直观):

sed 's/$/,/' test | tr -d '\n'

先用sed给每行加逗号,再用tr删掉所有换行符,同样能得到末尾带逗号的单行结果。

内容的提问来源于stack exchange,提问作者Classified

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:31:22