我正在尝试使用perl liner为第4行的许多perl文件添加一行。我正在使用:
perl -pi -le 'print " cell_type = pad;" if $. ==4' *.cell.plt
但这只是改变我目录中的第一个文件,而不是所有文件。如何一次在所有文件中插入行。我试过几种方法,但总是失败。请帮忙。谢谢。
答案 0 :(得分:7)
您只能从一个文件句柄中读取,因此只有一行4.幸运的是,有一种方法可以重置$.
。
perl -i -ple'
print " cell_type = pad;" if $. == 4;
close ARGV if eof;
' *.cell.plt
(请注意,eof
与eof()
不同。)
或者,您可以为每个文件执行perl
find -maxdepth 1 -name '*.cell.plt' -type f -exec \
perl -i -ple'print " cell_type = pad;" if $. == 4' {} \;