我有以下文件 除了第一个uniq FILE NAME之外,如何通过sed除去所有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
SOURCE FILE:552
文件名:/ dir1 / dir2 / dir3 / dir4 / dir5 / file
参数名称:blablabla
目标文件:14
消息来源:559
文件名:/ dirA / dirB / dirC / dirD / dirE / file
参数名称:blablabla
目标文件:134
SOURCE FILE:344
文件名:/ dirA / dirB / dirC / dirD / dirE / file
参数名称:blablabla
目标文件:13
消息来源:445
文件名:/ dirA / dirB / dirC / dirD / dirE / file
参数名称:blablabla
目标文件:13
消息来源:434
答案 0 :(得分:2)
awk '!(/^FILE NAME:/ && seen[$NF]++)' infile
答案 1 :(得分:0)
在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喜欢的任务只能根据该行的内容处理每一行(也许你之前见过的一件事并放入保持缓冲区) )。这项工作从根本上涉及需要通过文件传递的更复杂的知识体系。