所以我今天早些时候发布了一个可能不必要的复杂问题,所以希望这里的版本更清晰。
我正在尝试编辑文本文件并删除它们周围的重复行和行。所以该文件看起来像数千行:
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
答案 0 :(得分:2)
没什么好看的,但我认为它应该有效,假设数据开始并且保持前一行的结构,并且需要检查重复的行之后的两行:
$ 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 = $0 }
NR % 4 == 2 && $0 in seen { flag = 0 }
NR % 4 == 2 && !($0 in seen) { flag = 1; seen[$0]; 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