每组N个连续行如何折叠成一行,并用制表符分隔?

每组N个连续行如何折叠成一行,并用制表符分隔?

我正在尝试解决一个竞争性问题,我陷入了以下场景,有人可以帮助我了解如何实现输出吗

解释 :每一组连续三行应折叠成一行

[输出共享如下]

文件中的数据:

Abc 123,
zyxhj pqr
raj
ram:
vilas, 
1234
jkal
yui
gshj

输出 :

Abc 123,zyxhj pqr raj
ram:vilas,1234
jkal yui gshj

答案1

使用xargs

xargs -d'\n' -n3 <infile

根据\newline 作为分隔符每 3 行读取并打印


使用paste

paste -d ' ' - - - <infile

将数据粘贴到 3 列中,并使用空格分隔符


使用awk

awk '{ printf "%s%s", $0, (NR%3?OFS:ORS) }' infile

printf 每一行,然后如果 NR(记录数)不是 3 的模,则打印 OFS(输出字段分隔符;默认为空格),否则打印 ORS(输出记录分隔符;默认为换行符)如果是。

相关内容