你可以用 grep 配合 paste 或 tr 将匹配的多行合并为一行,并用逗号分隔。最简洁可靠的方式是:
grep "pattern" file.txt | paste -sd ','
paste -sd ',':-s表示串行合并(而非按列合并),-d ','指定分隔符为逗号。
不会在行末添加多余的逗号。
其他方法(按需选择):
使用
tr(会在末尾多一个逗号,需要额外处理):grep "pattern" file.txt | tr '\n' ',' | sed 's/,$//'使用
awk(更灵活,可控制是否加空格等):grep "pattern" file.txt | awk '{printf "%s%s", sep, $0; sep=","} END {print ""}'纯
sed(不依赖其他命令,但稍复杂):grep "pattern" file.txt | sed ':a;N;$!ba;s/\n/,/g'
示例:
假设 data.txt 内容为:
apple
banana
cherry
date执行 grep 'a' data.txt | paste -sd ',' 输出:
apple,banana,date注意:如果行内本身包含逗号,合并后可能引起歧义,建议使用不易冲突的分隔符(如 | 或 ;),或对输出格式做更精细的处理。
文档更新时间: 2026-04-10 01:16 作者:月影鹏鹏