sed或awk或perl+;删除除第一行(文件名)和#x2B之外的所有非uniq行;shell脚本

sed或awk或perl+;删除除第一行(文件名)和#x2B之外的所有非uniq行;shell脚本,sed,Sed,我有以下文件 如何通过sed删除除第一个uniq文件名之外的所有文件名行 例如,需要从文件中删除除第一行以外的所有文件名行: 文件名:/dir1/dir2/dir3/dir4/dir5/FILE 文件名:/dirA/dirB/dirC/dirD/dirE/FILE 文件: 文件名:/dir1/dir2/dir3/dir4/dir5/FILE 参数名称:blabla 目标文件:12 源文件:565 文件名:/dir1/dir2/dir3/dir4/dir5/FILE 参数名称:blabla 目标文

我有以下文件 如何通过sed删除除第一个uniq文件名之外的所有文件名行 例如,需要从文件中删除除第一行以外的所有文件名行:

文件名:/dir1/dir2/dir3/dir4/dir5/FILE

文件名:/dirA/dirB/dirC/dirD/dirE/FILE

文件:

文件名:/dir1/dir2/dir3/dir4/dir5/FILE

参数名称:blabla

目标文件:12

源文件:565

文件名:/dir1/dir2/dir3/dir4/dir5/FILE

参数名称:blabla

目标文件:18

源文件:552

文件名:/dir1/dir2/dir3/dir4/dir5/FILE

参数名称:blabla

目标文件:14

源文件:559

文件名:/dirA/dirB/dirC/dirD/dirE/FILE

参数名称:blabla

目标文件:134

源文件:344

文件名:/dirA/dirB/dirC/dirD/dirE/FILE

参数名称:blabla

目标文件:13

源文件:445

文件名:/dirA/dirB/dirC/dirD/dirE/FILE

参数名称:blabla

目标文件:13

源文件:python中的434

import sys
seen = set()
for line in sys.stdin:
  if (line.startswith('FILE NAME: ')):
    if (line in seen):
      continue
    else:
      seen.add(line)
  sys.stdout.write(line)
sys.flush()
我会考虑一下赛德,希望几个小时后再给你回复


不过,老实说,这不是一个非常沉闷的任务——sed喜欢这样的任务,即您可以仅基于该行的内容来处理每一行(可能还有一件您以前见过的事情,并将其放在hold缓冲区中)。这项工作基本上涉及到一个更复杂的知识体系,需要通过文件来完成。

如果我可以将pyton置于shell脚本下,它必须由shell脚本下的THXor进行sed?
awk '!(/^FILE NAME:/ && seen[$NF]++)' infile