![每组N个连续行如何折叠成一行,并用制表符分隔?](https://linux22.com/image/182716/%E6%AF%8F%E7%BB%84N%E4%B8%AA%E8%BF%9E%E7%BB%AD%E8%A1%8C%E5%A6%82%E4%BD%95%E6%8A%98%E5%8F%A0%E6%88%90%E4%B8%80%E8%A1%8C%EF%BC%8C%E5%B9%B6%E7%94%A8%E5%88%B6%E8%A1%A8%E7%AC%A6%E5%88%86%E9%9A%94%EF%BC%9F%20.png)
我正在尝试解决一个竞争性问题,我陷入了以下场景,有人可以帮助我了解如何实现输出吗
解释 :每一组连续三行应折叠成一行
[输出共享如下]
文件中的数据:
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
根据\n
ewline 作为分隔符每 3 行读取并打印
使用paste
:
paste -d ' ' - - - <infile
将数据粘贴到 3 列中,并使用空格分隔符
使用awk
:
awk '{ printf "%s%s", $0, (NR%3?OFS:ORS) }' infile
printf 每一行,然后如果 NR(记录数)不是 3 的模,则打印 OFS(输出字段分隔符;默认为空格),否则打印 ORS(输出记录分隔符;默认为换行符)如果是。