【问题标题】:sed or awk or perl + remove all not uniq lines except the first line (FILE NAME) + shell scriptsed 或 awk 或 perl + 删除除第一行(文件名)以外的所有非 uniq 行 + shell 脚本
【发布时间】:2010-06-15 22:53:01
【问题描述】:

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

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

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

文件:

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

参数名称:blablabla

目标文件:12

源文件:565

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

参数名称:blablabla

目标文件:18

源文件:552

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

参数名称:blablabla

目标文件:14

源文件:559

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

参数名称:blablabla

目标文件:134

源文件:344

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

参数名称:blablabla

目标文件:13

源文件:445

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

参数名称:blablabla

目标文件:13

源文件:434

【问题讨论】:

    标签: sed


    【解决方案1】:
    awk '!(/^FILE NAME:/ && seen[$NF]++)' infile
    

    【讨论】:

      【解决方案2】:

      在python中:

      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,并希望在几个小时内回复您。

      老实说,这不是一个非常繁琐的任务 - sed 喜欢这样的任务,您可以仅根据该行的内容来处理每一行(也许您以前见过并放入保持缓冲区的一件事) )。这项工作从根本上涉及需要通过文件进行的更复杂的知识体系。

      【讨论】:

      • 它必须在shell脚本THX下通过sed
      • 或者如果我可以将 pyton 放在 shell 脚本下?
      猜你喜欢
      • 2011-03-10
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多