Linux连接2行,然后根据分隔符输入新行

Linux连接2行,然后根据分隔符输入新行,linux,bash,awk,sed,Linux,Bash,Awk,Sed,我在尝试编写一个命令时遇到了一些问题,该命令可以在一个文本文件中合并两行,然后在有分隔符的地方输入一个新行。我对此进行了彻底的研究,唯一能找到的是每隔一行合并一行,然后添加一个分隔符。这不是我需要的,因为我已经在文件中有一个分隔符,它将我需要合并的每两行分隔开。 该文件当前包含以下内容(为了获得这些结果,我使用顶部的命令): 这是文件: 2015-12-29 08:55:43 sg-somepattern 2015-12-29 08:55:43 N22 -- 2015-12-29 08:56:5

我在尝试编写一个命令时遇到了一些问题,该命令可以在一个文本文件中合并两行,然后在有分隔符的地方输入一个新行。我对此进行了彻底的研究,唯一能找到的是每隔一行合并一行,然后添加一个分隔符。这不是我需要的,因为我已经在文件中有一个分隔符,它将我需要合并的每两行分隔开。 该文件当前包含以下内容(为了获得这些结果,我使用顶部的命令):

这是文件:

2015-12-29 08:55:43 sg-somepattern
2015-12-29 08:55:43 N22
--
2015-12-29 08:56:59 sg-somepattern
2015-12-29 08:56:59 N22
--
2015-12-29 08:58:07 sg-somepattern
2015-12-29 08:58:07 N22
--
2015-12-29 09:19:32 sg-somepattern
2015-12-29 09:19:32 N22
--
2015-12-29 22:05:57 sg-somepattern
2015-12-29 22:05:57 N22
现在,我需要的结果应该如下所示:

2015-12-29 08:58:07 sg-somepattern 2015-12-29 08:58:07 N22
2015-12-29 09:19:32 sg-somepattern 2015-12-29 09:19:32 N22
2015-12-29 22:05:57 sg-somepattern 2015-12-29 22:05:57 N22
使用了
sed'N;s/\n/'
不起作用,只是每隔一行加入分隔符


有没有办法通过内置命令实现这一点?我不熟悉awk,所以我很难自己写这篇文章。如有任何帮助,将不胜感激。

我将使用
awk

$ awk -v RS="--" -F"\n" 'NF>=3{print $(NF-2), $(NF-1)}' file
2015-12-29 08:55:43 sg-somepattern 2015-12-29 08:55:43 N22
2015-12-29 08:56:59 sg-somepattern 2015-12-29 08:56:59 N22
2015-12-29 08:58:07 sg-somepattern 2015-12-29 08:58:07 N22
2015-12-29 09:19:32 sg-somepattern 2015-12-29 09:19:32 N22
2015-12-29 22:05:57 sg-somepattern 2015-12-29 22:05:57 N22
这将分隔符
--
设置为记录分隔符。这样,每条记录都是一个块。然后,我们需要打印我们需要的特定行。

这可能适合您(GNU-sed):


删除分隔符并将剩下的每一行连接起来。

这很好,非常感谢。我知道召集黑暗议会会带来智慧。
$ awk -v RS="--" -F"\n" 'NF>=3{print $(NF-2), $(NF-1)}' file
2015-12-29 08:55:43 sg-somepattern 2015-12-29 08:55:43 N22
2015-12-29 08:56:59 sg-somepattern 2015-12-29 08:56:59 N22
2015-12-29 08:58:07 sg-somepattern 2015-12-29 08:58:07 N22
2015-12-29 09:19:32 sg-somepattern 2015-12-29 09:19:32 N22
2015-12-29 22:05:57 sg-somepattern 2015-12-29 22:05:57 N22
sed '/^--/d;N;s/\n/ /' file