了解脚本中的Perl单行命令

时间:2014-09-09 14:07:01

标签: bash perl

我试图了解如何在bash脚本中使用此Perl命令:

perl -nle 'print ++$_'

2 个答案:

答案 0 :(得分:4)

它从标准输入或文件中读取行,假设每行都是一个数字,并且打印数字加1,

seq 5 | perl -nle 'print ++$_'
2
3
4
5
6

如何将命令行开关转换为完整脚本,

perl -MO=Deparse -nle 'print ++$_'
BEGIN { $/ = "\n"; $\ = "\n"; }
LINE: while (defined($_ = <ARGV>)) {
    chomp $_;
    print ++$_;
}
  • n在代码中添加while(<>){}循环
  • l选中每一行,$\ = "\n"(每次打印后换行)
  • 始终在引用perl代码之前
  • e

答案 1 :(得分:3)

传递给perl的标志在perldoc perlrun

的页面中有说明
  • -n 会导致整个Perl“程序”在输入的每一行上运行一次,$_依次获取每个输入行的值,< / LI>
  • -l 让“换行”变得“神奇”,
  • -e 在命令行中提供有问题的Perl程序。

因此,为每行运行程序print ++$_,并打印当您尝试向行内容添加1时生成的值。对于看起来像数字的线条,这将只是打印一个更大的数字。对于简单为ASCII字母的行,将发生自动增量魔法(aa将变为ab,依此类推)。对于不是数字的行,它们的值将为0并打印1