如何删除perl脚本中的第一行txt文件?
`sed "1d" filename.txt`
不要工作。
答案 0 :(得分:2)
您可以使用Tie::File
:
use Tie::File;
tie @array, 'Tie::File', $filename or die $!;
shift @array;
untie @array;
答案 1 :(得分:1)
`sed 1d filename.txt > newfile.txt`
应该有效。如果你不将它重定向到一个文件,它只会读取整个文件减去stdout的第一行。
答案 2 :(得分:0)
将输出发送到sed
的STDOUT(Perl继续捕获变量)而不是filename.txt
。您想使用sed
的{{1}}。
-i
由于没有输出要捕获,因此使用反引号是没有意义的。你想要sed -i "1d" filename.txt
。
system
更好:(避免启动另一个shell)
system('sed -i "1d" filename.txt');
最佳:(是否为您进行错误检查)
system('sed', '-i', '1d', 'filename.txt');
答案 3 :(得分:0)
因为您使用内联sed执行此操作,所以这是Perl equiv ..
perl -ne'$.==1?next:print' <(seq 1 10)
选项的含义,
-n assume "while (<>) { ... }" loop around program
-e program one line of program (several -e's allowed, omit programfile)
其他说明,
$.
是当前行号的变量。<()
是用于在后台生成FIFO的Bash voodoo。