如何用awk/sed/grep自动化将test1.txt中按.txt分组的单列数据转成行
用Awk实现动态分组文本转换
直接使用Awk命令即可完成需求,无需依赖固定行数参数,完美适配数据动态新增的场景:
awk '/\.txt$/ {if (line != "") print line; line=$0; next} {line=line","$0} END {print line}' test1.txt > text2.txt
命令逻辑说明
- 匹配以
.txt结尾的行(文件名行):- 若
line变量不为空,说明已攒完上一个文件的所有数值,先打印该行 - 将当前文件名赋值给
line,作为新分组的起始内容 - 跳过后续逻辑,直接处理下一行
- 若
- 非文件名行(数值行):将当前数值用逗号追加到
line末尾 - 处理完所有行后,打印最后一个分组的内容
执行验证
执行上述命令后,查看生成的text2.txt:
cat text2.txt
输出结果:
row1.txt,1234,2331,2238 row2.txt,2773,6673
内容的提问来源于stack exchange,提问作者Robert Orsini
相关产品推荐
相关产品推荐

