sed或awk或perl+;删除除第一行(文件名)和#x2B之外的所有非uniq行;shell脚本
我有以下文件 如何通过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: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 目标文
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