Perl:如何在不读取和复制整个文件的情况下删除文件的第一行

dr *_*rry 14 perl line

我确实在目录中有一大堆文件,并且我想从每个文件中删除第一行(包括回车).我可以将整个文件读入一个字符串数组,并将除了第一个元素之外的所有元素写入一个新文件,但这对我来说看起来有点麻烦有更好的方法吗?哦,首选的语言是Perl.

Kav*_*rek 24

试试这个衬垫

perl -pi -e '$_ = "" if ( $. == 1 );' filename
Run Code Online (Sandbox Code Playgroud)

我以前用过它,应该就是你所需要的.


小智 11

怎么样

tail +2
Run Code Online (Sandbox Code Playgroud)

在壳?

(编辑:你可能需要更新的Linux tail -n +2(谢谢你,GNU!:())


leo*_*loy 9

perl -n -i -e 'print unless $. == 1' myfile
Run Code Online (Sandbox Code Playgroud)

这与stocherilac的答案类似.

但是,无论如何(在所有其他答案中给出了答案!),你总是在阅读完整的文件.无法避免这种情况,AFAIK.


pil*_*row 9

哦,首选的语言是Perl.

有时甚至比perl sed更好sed:

sed -i 1d *
Run Code Online (Sandbox Code Playgroud)


dax*_*xim 5

use Tie::File qw();
for my $filename (glob 'some_where/some_files*') {
    tie my @file, 'Tie::File', $filename or die "Could not open $filename: $!";
    shift @file;
}
Run Code Online (Sandbox Code Playgroud)