我有以下文件,除了第一个唯一sed
之外,如何删除FILE NAME
所有FILE NAME
行。例如,需要从文件中删除所有FILE NAME
行除外第一个:
FILE NAME: /dir1/dir2/dir3/dir4/dir5/file
FILE NAME: /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
答案 0 :(得分:0)
$line_count = 0;
open (OLD_FILE, "<$old_file") or die ("Could not open $old_file.");
open (NEW_FILE, ">$new_file") or die ("Could not open $new_file.");
while (<OLD_FILE>) {
chomp ($_);
if ($_ =~ /^FILE NAME/) {
$line_count++;
if ($line_count > 1) {
next;
}
}
print NEW_FILE "$_\n";
)
close (FILE);
这会在旧文件的每一行上进行模式匹配。如果该行以“FILE NAME”开头并且我们已经匹配了一次,那么它不会再将这些行打印到我们的新文件中。