我确实在目录中有一大堆文件,并且每个文件都要删除第一行(包括回车符)。我可以将整个文件读入一个字符串数组,并将除了第一个元素之外的所有元素写入一个新文件,但这对我来说看起来有点麻烦有更好的方法吗?哦,首选的语言是Perl。
答案 0 :(得分:24)
试试这个衬垫
perl -pi -e '$_ = "" if ( $. == 1 );' filename
我以前用过它,应该就是你所需要的。
答案 1 :(得分:11)
怎么样
tail +2
在shell中?
(编辑:在较新的Linux中你可能需要tail -n +2
(谢谢你,GNU!:())
答案 2 :(得分:9)
perl -n -i -e 'print unless $. == 1' myfile
这与stocherilac的答案类似。
但是,无论如何(在所有其他答案中给出了答案!),你总是在阅读完整的文件。无法避免这种情况,AFAIK。
答案 3 :(得分:9)
哦首选语言是Perl。
有时sed
比perl更好sed
:
sed -i 1d *
答案 4 :(得分: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;
}
答案 5 :(得分:-1)
正如Schwern指出的那样, 不 按照我原先的想法执行提前退出:
perl -pi -e '$_ = q// and last if $. == 1;' myFile
似乎一个无法完全避免处理整个文件。