【发布时间】:2016-12-02 14:18:47
【问题描述】:
我有一个超过 200,000 行的文件。行被分组。每组行的开头以“IMAGE”开头,然后是以“HISTO”开头的一行,然后是至少一个(但通常是多个)以“FRAG”开头的行。
我需要:
1. 删除任何以“HISTO”开头的行。
2. 对于每个“FRAG”行,我需要将其与前一个“IMAGE”行连接起来。
这是一个例子。
>IMAGE ...data1...
>HISTO usually numbers 0 0 1 1 0 1 0
>FRAG ...data1...
>FRAG ...data2...
>IMAGE ...data2...
>HISTO usually numbers 0 0 1 1 0 1 0
>FRAG ...data1...
>FRAG ...data2...
>FRAG ...data3...
>FRAG ...data4...
结果需要如下所示:
>IMAGE ...data1... FRAG ...data1...
>IMAGE ...data1... FRAG ...data2...
>IMAGE ...data2... FRAG ...data1...
>IMAGE ...data2... FRAG ...data2...
>IMAGE ...data2... FRAG ...data3...
>IMAGE ...data2... FRAG ...data4...
在以 IMAGE 行重新开始之前,可以有许多 FRAG 行。我使用的是 mac,所以我几乎可以使用任何工具。
我试过这个,但它是将多条 FRAG 行合并到一个 IMAGE 行。
awk '/^IMAGE/{if(NR>1)print a; a=$0} /^(FRAG)/{a=a" "$0}' Input.txt > output.txt
结果如下:
图像 ...data1... FRAG ...data1... FRAG ...data2...
【问题讨论】:
-
@Inian 我编辑了原始消息以包含我尝试过的内容。至少它删除了 HISTO 行。但它结合了 FRAG 线条,使其成为一排。