以下のようなテキストファイルがあります。削除したい余分な改行文字がいくつかあります。
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 の改行を保持する必要があります。間に複数のスペースを入れることができます。したがって、ソリューションにスペースを使用することはできません。
再編集 [実際のファイルのセクションを追加]
私が考えることができるロジックは、前の行が「@」で終わり、現在の行が「@」で始まるという条件でのみ新しい行を保持することでした。ただし、これをシェルに実装する方法や、より良いロジックが可能かどうかはわかりません。
@ 258908159@ 258908159@Subwork=E,Mment=SS09 @ 4@Jun 5 2012 23:24:41 @Jun 5 2012 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 @Jun 5 2012 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
END @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@Jun 5 2012 23:24:41 @Jun 5 2012 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 @Jun 5 2012 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
END @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@
ありがとう。