将文本文件以 3 个条目为一组进行连接

将文本文件以 3 个条目为一组进行连接

我有一个像这样的文本文件:

X0122
Yellow Car
$1200
YK321
Black Car
$400
BZ321132
Red Boat
$2344

每行由一个分隔\n

我想将每 3 个元素加入一行,并用 分隔;。因此,该文件将被转换为:

X0122;Yellow Car;$1200
YK321;Black Car;$400
BZ321132;Red Boat;$2344

我该如何在 Unix 上做到这一点?

注意:这些文件可能包含重音字母,如 á、ó、ã 和单引号,并以“UTF-8 Unicode 英语文本,带有很长的行”编码,就像命令file所说的那样。

答案1

您可以使用粘贴:

$ paste -sd';;\n' file
X0122;Yellow Car;$1200
YK321;Black Car;$400
BZ321132;Red Boat;$2344

答案2

awk

awk 'ORS=NR%3?";":RS'

输出:

X0122;Yellow Car;$1200
YK321;Black Car;$400
BZ321132;Red Boat;$2344

说明: 根据行号,输出记录分隔符设置为分号或换行符。

相关内容