用 pbpaste | tr '\n' ',' | sed 's/,$//' 可将剪贴板多行转为逗号分隔单行;推荐 paste -sd ',' 处理文件或命令输出,自动跳过空行且无尾随逗号。

你需要把剪贴板里粘贴出来的多行数据(比如从表格复制的列、日志逐行输出、或列表项)快速转成逗号分隔的单行字符串,用于 SQL IN 语句、JSON 数组拼接或命令行参数传递。
用 pbpaste + tr 一行搞定
第一步:把多行文本复制到剪贴板(例如在 Excel 里选中一列 → Command+C)
第二步:在终端执行:pbpaste | tr '\n' ',' | sed 's/,$//'
这会把剪贴板内容按换行符切开,每行末尾加逗号,再删掉最后那个多余逗号。注意:如果原始行末有空格,tr 不会清理,会导致 apple ,banana 这种脏结果——务必先手动清理或改用下个方法。
用 sed 处理文件中的多行(含空行和尾部空格防护)
方法一:直接读取文件并安全合并
确保目标文件(如 data.txt)已存在,且你当前在该文件所在目录。
执行:sed ':a;N;$!ba;s/\n/,/g' data.txt | sed 's/[,[:space:]]*$//'
这个命令用 sed 的标签循环读完整个文件,再把所有换行替换成逗号;第二段 sed 删除末尾可能残留的逗号或空格。它能正确处理空行——但不会跳过空行,所以如果原始文件含空行,结果会出现连续逗号,需前置过滤。
方法二:先清理再替换(推荐)
① 清理尾部空格:sed -i '' 's/[[:space:]]*$//' data.txt
② 删除空行:sed -i '' '/^[[:space:]]*$/d' data.txt
③ 合并为逗号分隔:paste -sd ',' data.txt
【paste -sd ',' 是 macOS 原生命令,比 sed 更稳,自动跳过空行且不产生尾随逗号】 这三步顺序不能颠倒,否则空行或空格会导致逗号错位。
从命令输出实时合并(比如 ps 或 grep 结果)
比如你想把当前所有 Python 进程名提出来拼成一行:
ps aux | grep python | awk '{print $11}' | grep -v grep | paste -sd ','
这里 paste -sd ',' 接在管道末尾,直接接收上一步的每一行输出,转为逗号分隔。如果某行本身含逗号(如路径中有逗号),此法不转义——此时应改用 while 循环加 printf 控制格式。
执行后光标停在新生成的逗号分隔字符串末尾,可直接 Command+A 复制使用。











