我正在尝试创建一个使用vim删除文件行的Perl脚本。我想自动执行此任务,因为我必须一遍又一遍地删除这些行。这是我到目前为止编写的脚本,但它不起作用。
#!/usr/bin/perl
my $PROG = 'hwdr';
my $PERS = "/u/blh/scripts/70-persistent-net.rules";
open (IN, $PERS) || die "Cannot open file".$PERS."for read";
@lines = <IN>;
close IN;
open (OUT, ">", $PERS) || die "Cannot open file. Please run as root".$PERS."for write";
foreach $line (@lines)
{
$line =~ 8,10d ;
print OUT $line;
}
close OUT;
感谢您的帮助
答案 0 :(得分:2)
使用$.
跟踪行号:
while (<IN>) {
last if $. > 10;
print;
}
使用就地编辑的单行版本:
perl -pi -e '$. > 10 && exit;' /u/blh/scripts/70-persistent-net.rules
答案 1 :(得分:2)
尝试使用sed
sed -i '10,$d' file
答案 2 :(得分:0)
作为一个例子(因为你似乎想要一个perl脚本):
输入(nums.txt):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
脚本:
#!/usr/bin/perl -w
use strict;
my $file = 'nums.txt';
open my $in, '<', $file or die "Can't read old file: $!";
open my $out, '>', "new.$file" or die "Can't write new file: $!";
my $line_count = 0;
while( <$in> )
{
$line_count++;
next if $line_count >= 10;
print $out $_;
}
输出(new.nums.txt):
1
2
3
4
5
6
7
8
9