首页 > 解决方案 > 使用 awk 将行合并为一行

问题描述

我有一个包含以下记录的文件

ABC
BCD
CDE
EFG

我想把它转换成

'ABC','BCD','CDE','EFG'

我试图通过以下方式使用 awk 来解决这个问题:

awk '/START/{if (x)print x;x="";next}{x=(!x)?$0:x","$0;}END{print x;}'

但我得到的不是我所期望的:

ABC,BCD,CDE,EFG

关于我们如何实现这一目标有什么建议吗?

标签: awk

解决方案


请您尝试以下操作。

awk -v s1="'" 'BEGIN{OFS=","} {val=val?val OFS s1 $0 s1:s1 $0 s1} END{print val}' Input_file

输出如下。

'ABC','BCD','CDE','EFG'

推荐阅读