参考 : http:/my.huhoo.net/archives/2007/08/perl_1.html
http://bbs.chinaunix.net/viewthread.php?tid=499434
perl 命令使用 :
整洁性
-w | 打开警告 |
-Mstrict | 打开严格编译指示(pragma) |
数据
-0 | (这是个零)指定输入记录分隔符 |
-a | 将数据分割成名为 @F 的数组 |
-F | 指定分割时 -a 使用的模式(请参阅 perldoc -f split) |
-i | 在适当的位置编辑文件(请参阅 perldoc perlrun 以获取大量详细信息) |
-n | 使用 <> 将所有 @ARGV 参数当作文件来逐个运行 |
-p | 和 -n 一样,但是还会打印 $_ 的内容 |
执行控制
-e | 指定字符串以作为脚本(多个字符串迭加)执行 |
-M | 导入模块 |
-I | 指定目录以搜索标准位置前的模块 |
--- 实例 ---
.环境设置:如果有系统字符编码 冲突,在当前
vim ~/. bash_profile 下加入
LANG = zh_CN
LC_ALL = zh_CN . UTF8
export LANG LC_ALL
.大小写转换
echo " ABC1C2cGJ " | perl - ne ' tr/[A-Z]/[a-z]/; print ; ' # print
# "L 中间全部小写 "E ; "U 中间全部大 写 "E
echo " ABC1C2cGJ " | perl - ne ' s/(.*?1)(.*?)(2.*?)/$1/L$2/E$3/g; print ; '
# print ABC1c2cGJ
. 输出 5 到 10 行 :
cat test.txt |perl -ne ' print if $.<10 and $.>5 ;'
. 取得当前 shell 环境的变量
$> arg="test"
$> perl -e'print @ARGV ;' $arg
$> perl -e 'print '$arg'; ' #或者
这里特别注意 如果:
$> arg=`date` ;
$> perl -e 'print '$arg'; '
是会报错 ; 需要 perl -e ' print '"$arg"' ; '
结果 2010年 03月 20日 星期六 13:45:31 CST
#在有空格的地方 需要 特别再加 ""
. 打开命令行里的文件,一行行的读取.每一行缺省保存在 $_
>$ perl -n -e 'print "$. - $_"' file
输出当前行数 $. 和当前行 $_.
>$ perl -p -ne '$_ = "$. - $_"' file
.文本编码转换
# linux 下默认 utf-8 如 encode("UTF-8", decode("GBK",$_));
perl - MEncode - ne ' print decode("GBK",$_); ' file . txt
. 选择输出
>$ perl -n -e 'next LINE unless /pattern/; print $_'
.我个人常常使用 -l 参数, 用来给每一个输出加 /n. 例如
>$ perl -le 'print "Hello World"'
. # 像 awk 一样 Begin{}End{} 和 -F 切割
>$ perl -F '/W' -a ne 'END {print $x} $x += @F' file.txt