参数
-n和-p -e -i
1.-n和-p
增加了循环的功能,使你可以一行一行来处理文件
2.-e
可以让Perl程序在Perl命令行上运行.
例如,我们可以在Perl命令行上运行"HelloWorld"程序而不用把它写入文件再运行.
$perl-e'print"HelloWorld\n"'
3:-i
把源文件更名然后从这个更名的源文件里读取.最后把处理后的数据写入源文件.
如果-i后跟有其他字符串,这个字符串与源文件名合成后来生成一个新的文件名.
此文件会被用来储存原始文件以免被-i参数覆盖.
一些实例:
1.
lc,将字符串改为小写
uc,将字符串改为大写
lcfirst,改变字符串首字母小写
ucfirst,改变字符串首字母大写
uc,将字符串改为大写
lcfirst,改变字符串首字母小写
ucfirst,改变字符串首字母大写
[root@localhost ~]# echo -n 'hello, hanli' | perl -ne '$rev=uc($_); print $rev,"\n";'
HELLO, HANLI
[root@localhost ~]# echo -n 'HELLO, hanli' | perl -ne '$rev=lc($_); print $rev,"\n";'
hello, hanli
[root@localhost ~]# echo -n 'hello, Hanli' | perl -ne '$rev=ucfirst($_); print $rev,"\n";'
Hello, Hanli
[root@localhost ~]# echo -n 'hello, Hanli' | perl -ne '$rev=lcfirst($_); print $rev,"\n";'
hello, Hanli
HELLO, HANLI
[root@localhost ~]# echo -n 'HELLO, hanli' | perl -ne '$rev=lc($_); print $rev,"\n";'
hello, hanli
[root@localhost ~]# echo -n 'hello, Hanli' | perl -ne '$rev=ucfirst($_); print $rev,"\n";'
Hello, Hanli
[root@localhost ~]# echo -n 'hello, Hanli' | perl -ne '$rev=lcfirst($_); print $rev,"\n";'
hello, Hanli
2.批量文件内容替换
#使用perl语言
find ./ -name '*.sh' | xargs perl -pi -e 's|string1|string2|g'
#使用sed程序
find ./ -name '*.sh' | xargs sed -i 's/string1|string2/g'