如何删除 perl 脚本中 txt 文件的第一行?
`sed "1d" filename.txt`
不工作。
您可以使用Tie::File
:
use Tie::File;
tie @array, 'Tie::File', $filename or die $!;
shift @array;
untie @array;
`sed 1d filename.txt > newfile.txt`
应该管用。如果你不将它重定向到一个文件,它只会读取整个文件减去第一行到标准输出。
因为您使用内联 sed 执行此操作,所以这里是 Perl 等价物。
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 巫术。这会将输出发送到sed
的 STDOUT(Perl 继续捕获到变量中)而不是filename.txt
. 你想使用sed
's -i
。
sed -i "1d" filename.txt
由于没有要捕获的输出,因此使用反引号是没有意义的。你想要system
。
system('sed -i "1d" filename.txt');
更好:(避免启动另一个外壳)
system('sed', '-i', '1d', 'filename.txt');
最佳:(是否为您检查错误)
use IPC::System::Simple qw( systemx );
systemx('sed', '-i', '1d', 'filename.txt');