从文本文件中删除重复的行和周围的行

Remove Duplicate and Surrounding Lines From Text File

所以我今天早些时候发布了一个可能不必要地复杂的问题,所以希望这里有一个更清晰的版本。

我正在尝试编辑一个文本文件并删除重复的行和它们周围的行。所以文件看起来像这样有数千行:

Info1
Blue
Info1
Info1
Info2
Red
Info2
Info2
Info3   <- Delete line above
Blue    <- Delete Duplicate
Info3   <- Delete two lines below
Info3   <- Delete two lines below

我想编辑或创建一个输出文件,以便删除所有重复行及其周围的信息。所以上面的示例输出将是:

Info1
Blue
Info1
Info1
Info2
Red
Info2
Info2

这里的要求是我已经开始尝试的:

#Iterates through multiple files
for f in /dir/*; do
     mv "$f" "$f~" &&
     #unzip and set 2nd line and every fourth line to temp var
     #but then not really sure what to do after this
     gzip -cd "$f~" | sed '2~4s/ = $temp' | gzip > "$f"
 done

没什么特别的,但我认为它应该可以工作,假设数据以需要检查重复项的行开始并保持前一行和后两行的结构:

$ cat brg.txt
Info1
Blue
Info1
Info1
Info2
Red
Info2
Info2
Info3
Blue
Info3
Info3
Info4
Green
Info4
Info4

$ cat brg.awk
NR % 4 == 1 { save = [=10=] }
NR % 4 == 2 && [=10=] in seen { flag = 0 }
NR % 4 == 2 && !([=10=] in seen) { flag = 1; seen[[=10=]]; print save; print }
NR % 4 == 3 && flag
NR % 4 == 0 && flag

$ awk -f brg.awk brg.txt
Info1
Blue
Info1
Info1
Info2
Red
Info2
Info2
Info4
Green
Info4
Info4