当我想要替换许多文件中的常用单词时,我在unix中使用命令行中的perl。 我想知道运行它时-pi和-e是什么,如果我不放这些,会发生什么。
示例:perl -pi -e 's/design/dezine/g' *
答案 0 :(得分:3)
这些都记录在perlrun中(从perldoc perlrun
和man perlrun
获得)。
-e
将其余参数(如果有)或下一个参数(否则)视为要执行的Perl代码。取代脚本名称。
$ perl -e'print "abc\n";'
abc
-n
为-e
的每一行执行脚本(或ARGV
代码)。该行将出现在$_
中。
$ perl -MO=Deparse -ne'print uc($_);'
LINE: while (defined($_ = <ARGV>)) {
print uc $_;
}
-e syntax OK
$ echo abc | perl -ne'print uc($_);'
ABC
-p
与-n
类似,但在执行代码后也会导致$_
打印。
$ perl -MO=Deparse -pe'print uc($_);'
LINE: while (defined($_ = <ARGV>)) {
print uc $_;
}
continue {
die "-p destination: $!\n" unless print $_;
}
-e syntax OK
$ echo abc | perl -pe'$_ = uc($_);'
ABC
-i
代表“就地”。它将输出“重定向”回文件ARGV
正在读取。
BEGIN { $^I = ""; }
LINE: while (defined($_ = <ARGV>)) {
print uc $_;
}
continue {
die "-p destination: $!\n" unless print $_;
}
-e syntax OK
$ echo abc >file
$ perl -i -pe'$_ = uc($_);' file
$ cat file
ABC