我有一个如下所示的文本文件。它有一些我想删除的额外换行符。
LINE1: @Line1Col1 @Line1Col2
LINE2: @Line1Col3 @Line1Col4 @ Line1Col5@
LINE3: @Line2Col1 @Line2Col2 @Line2Col3
LINE4: @Line2Col4@
LINE5: Line2Col5 @
我想删除换行符,使其看起来像这样:
@Line1Col1 @Line1Col2 @Line1Col3 @Line1Col4 @Line1Col5@
@Line2Col1 @Line2Col2 @Line2Col3 @Line2Col4@ Line2Col5@
如果一行以@定界符开始并以@定界符结束,则该行被定义为完整。请注意,分隔符 @ 已存在于文件中。例如,追加 LINE1 和 LINE2 使该行完整。类似地,附加 LINE3、LINE4 和 LINE5 会形成另一个完整的行(其中,在每一行上,数据 LineXcolX 用于说明目的)。因此,我需要删除 LINE1 中存在的换行符并保留 LINE2 中的换行符。同样,我需要删除 LINE3 和 LINE4 中的换行符并保留 LINE5 中的换行符。中间可以有多个空格;因此,空格不能用于解决方案。
重新编辑[添加了实际文件的一部分]
我能想到的一个逻辑是,仅在前一行以“@”结尾且当前行以“@”开头的条件下保留新行。但是,我不确定如何在 shell 中实现这一点,或者是否可能有更好的逻辑。
@ 258908159@ 258908159@Subwork=E,Mment=SS09 @ 4@2012 年 6 月 5 日 23:24:41 @2012 年 6 月 5 日 23:24:00 @ 2@ * "DUMMYI"U 120605 DUMMY DATA @Jun 5 2012 23:26:00 @ 403@ 21@PRCAIE @ 10780093@ -2@ @ -1@ -2@ 1@ 35@ 1@@ -1@ NULL@ -1@ 154@ 1@ 40958044@ 1@ 1@ 3@ 0@ -2@ 1@ @ 258908158@ 258908158@Subwork=E,Mment=SS09 @ 4@Jun 5 2012 23:24: 41 @2012 年 6 月 5 日 23:24:00 @ 2@ 3TEST300@2@3TEST300@2@3TEST3Mment=SS09 @ 4@Jun 5 2012 23:24:41 @Jun 5 2012 23:24:00 @ 2@ 3TEST3Mment=SS09 @ 4@Jun 5 2012 23:24:41 @Jun 5 2012 23:24:00 @ 2@ 3TEST3
结束@2012 年 6 月 5 日 23:26:00@402@21@@10780093@-2@@-1@-2@1@35@1@@ -1@ NULL@ -1@ 154@ 1@ 40958044@ 1@ 1@ 3@ 0@ -2@ 0@
@ 258908158@ 258908158@Subwork=E,Mment=SS09 @ 4@2012 年 6 月 5 日 23:24:41 @2012 年 6 月 5 日 23:24:00 @ 2@ * “DUMMYI”U 120605 DUMMY @Jun 5 2012 23:26:00 @ 402@ 21@PRCAIE @ 10780093@ -2@ @ -1@ -2@ 1@ 35@ 1@@ -1@ NULL@ -1@ 154@ 1@ 40958044@ 1@ 1@ 3@ 0@ -2@ 1@ @ 258908157@ 258908157@Subwork=E,Mment=SS09 @ 4@Jun 5 2012 23:24: 41 @2012 年 6 月 5 日 23:24:00 @ 2@ 3TEST300@2@3TEST300@2@3TEST3Mment=SS09 @ 4@Jun 5 2012 23:24:41 @Jun 5 2012 23:24:00 @ 2@ 3TEST3Mment=SS09 @ 4@Jun 5 2012 23:24:41 @Jun 5 2012 23:24:00 @ 2@ 3TEST3
结束@2012 年 6 月 5 日 23:26:00@401@21@@10780093@-2@@-1@-2@1@35@1@@ -1@ NULL@ -1@ 154@ 1@ 40958044@ 1@ 1@ 3@ 0@ -2@ 0@
谢谢。