【发布时间】:2014-01-23 09:25:12
【问题描述】:
我正在尝试从文件中读取行并将输出写入另一个文件。我正在使用 open 来实现这一点。但我无法从第一个文件中清除一些不需要的行。 问题来了:
我有一个包含以下行的文本文件
Project1_Employees
Matt Stone
Trey parker
Eric Cartman
Kenny
Project2_Employees
Stan
Matt Stone
Trey Parker
Kyle
我正在使用我的代码对名称进行排序并打印 uniq 名称。但我无法删除 Project1_Employees 和 Project2_Employees 行。这只是文本文件的一部分。有数百行这样的行。
open(FH, '<employeenames.txt');
next if (<FH> =~ m/Employees/);
open(OFH, ">sortedemployee.txt");
my %seen;
print OFH sort grep !$seen{$_}++, <FH>;
close(OFH);
close(FH);
我正在寻找的输出是
Eric Cartman
Kenny
Kyle
Matt Stone
Stan
Trey parker
我想使用 open 来执行此操作,因为我有一个要求。
【问题讨论】:
-
如果可以切换,这在 shell 中会非常简单。
-
@BroSlow
uniq需要排序输入 -
@mpapec 对,排序很简单。例如
grep -v '_Employees\|^$' file | sort -f | uniq -i几乎完全符合 OP 的要求
标签: perl