Sorting 如何在一列中打印3行?
我有一个像下面这样的文件Sorting 如何在一列中打印3行?,sorting,awk,sed,paste,cut,Sorting,Awk,Sed,Paste,Cut,我有一个像下面这样的文件 ab13p29im-sss29511 0 Jan 12 22:43 ab13p29im-sss29531 0 Jan 12 22:43 ab13p29im-sss29512 0 Feb 2 16:11 ab13p29im-sss29522 0 Feb 2 16:12 ab13p29im-sss29532 0 Feb 2 16:12 ab21p30im-sss30511 0 Jan 12 22:43 ab21p30im-sss30531 0 Jan 12 22:43 ab
ab13p29im-sss29511
0
Jan 12 22:43
ab13p29im-sss29531
0
Jan 12 22:43
ab13p29im-sss29512
0
Feb 2 16:11
ab13p29im-sss29522
0
Feb 2 16:12
ab13p29im-sss29532
0
Feb 2 16:12
ab21p30im-sss30511
0
Jan 12 22:43
ab21p30im-sss30531
0
Jan 12 22:43
ab21p30im-sss30512
0
Feb 2 16:13
ab21p30im-sss30522
3
Feb 2 16:12
我想打印这是下面的格式
ab13p29im-sss29511 0 Jan 12 22:43
ab21p30im-sss30522 0 Feb 2 16:12
ab21p30im-sss30531 0 Jan 12 22:43
我使用的是命令paste----
。但是如果其中任何一个值为null,格式就会像下面那样混乱
ab13p29im-sss29511 0 Jan 12 22:43
ab21p30im-sss30522 0 ab21p30im-sss30531
0 Jan 12 22:43 ab21p30im-sss30523.
比如,如果任何主机都没有日期,或者任何值都为null,那么它将打破3,3,3模式 您喜欢这样的一些:
awk 'ORS=NR%3?" ":RS' file
ab13p29im-sss29511 0 Jan 12 22:43
ab13p29im-sss29531 0 Jan 12 22:43
ab13p29im-sss29512 0 Feb 2 16:11
ab13p29im-sss29522 0 Feb 2 16:12
ab13p29im-sss29532 0 Feb 2 16:12
ab21p30im-sss30511 0 Jan 12 22:43
ab21p30im-sss30531 0 Jan 12 22:43
ab21p30im-sss30512 0 Feb 2 16:13
ab21p30im-sss30522 3 Feb 2 16:12
通过使用
awk
命令和显式连接:
$ awk 'NR % 3 == 1 { lines=$0 ; next } { lines=lines" "$0 } NR % 3 == 0 { print lines ; lines="" }' file
ab13p29im-sss29511 0 Jan 12 22:43
ab13p29im-sss29531 0 Jan 12 22:43
ab13p29im-sss29512 0 Feb 2 16:11
ab13p29im-sss29522 0 Feb 2 16:12
ab13p29im-sss29532 0 Feb 2 16:12
ab21p30im-sss30511 0 Jan 12 22:43
ab21p30im-sss30531 0 Jan 12 22:43
ab21p30im-sss30512 0 Feb 2 16:13
ab21p30im-sss30522 3 Feb 2 16:12
加载2行,在打印前删除新行,然后循环
您可以通过放置模式检查来启动循环,如
/[a-b0-9]\{9\}-[a-b0-9]\{8\}/!d代码>在第一次N
之前,你能举例说明什么地方出错了吗。在文章中也使用代码标签。编辑时选择文本并单击此按钮{}
“我有一个问题”“这里有一些数据不能说明我的问题”“帮助我解决我的问题”。这样写是没有意义的,是吗?编辑您的问题,以显示显示您希望我们帮助您解决的问题的数据。谢谢,但这里的问题是,如果没有主机名的日期,所有格式都将混乱。例如,如果3列中的任何值为空,则格式变差。然后,您是否可以更新您的帖子并给出出错数据的示例。空值是指该行丢失,因此它打破了3,3,3行模式?
sed 'N;N;s/\n/ /g' YourFile