在遍历文件一次之后,我想返回到文件的开头,并删除基于原始遍历文件的条目,但我不知道如何返回到文件的开头。我有一行程序的输入文件名,但没有文件句柄。我需要有文件句柄吗?如何从文件名中获取它?
谢谢。
发布于 2018-10-10 07:48:13
文件句柄为ARGV。虽然-i
可能会提出关于寻找的问题,但它在我的测试中是有效的
perl -i.bak -pe'
$_ = "line: $_";
if ($. == 2) { seek ARGV, 0, 0 }
' test.txt
如果您发现-i
或备份(我没有)出现问题,请手动执行此操作。
使用-p
switch时,每次都会打印$_
。注释中的代码使用了它,但这个问题似乎暗示不是每一行都需要打印,因为它想从开头“删除条目”。如果是这样,那么使用-n
而不是-p
,后者也会打开文件并迭代其行,但不打印。然后根据需要添加打印语句。
阅读I/O Operators in perlop通常是一个非常好的主意,一旦你对此胡乱摆弄,我真的会推荐它。
似乎有更好的方法来解决你的问题,但我们需要更多的细节。
https://stackoverflow.com/questions/52729767
复制相似问题