环境设置:如果有系统字符编码 冲突,在当前
vim ~/. bash_profile 下加入
LANG = zh_CN
LC_ALL = zh_CN . UTF8
export LANG LC_ALL
字符编码转化 :
# 由decode解析,默认会使用 系统编码 输出
# 在 linux 下面其实等价 encode("UTF-8", decode("GBK",$_));
perl - MEncode - ne ' print decode("GBK",$_); ' file . txt
判断数据是否符合输出:
echo " 121 " | perl - ne ' print if /2/; ' # print 123
匹配正则group输出 :
echo " abc121a " | perl - ne ' print $1 if /(\D+)/; ' # print abc
大小写转化:
# 全部 大小转小写
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
源文件替换:
echo " ABC 123 " > te
sed - i ' s/ABC/abc/g ' te
或者 : perl - i - pe ' s/ABC/abc/g ' te
cat te # print abc 123
外部传参 :
tt="cc"
echo "gg" |perl -ne ' print "'$tt'" ;'
输出:cc
perl - e ' print "$ARGV[0]\t$ARGV[1]\n" ' ' par1 ' ' par2 ' # print par1 par2
重复列输出 :
cat xx . txt | awk - F " " ' a[$1]++ '
或者 :
cat xx . txt | perl - F " \t " - ane ' $a{$F[1]}++;END{
while(($k,$v)=each(%a)){ print "$k = $v "n"; }
} '
结果比如:
百度手机在线 = 7
中兴 = 2
万信恒通 = 2
还比如:查看各用户 有多少个进程
ps - ef | perl - ane ' $a{$F[0]}++;END{
while(($k,$v)=each(%a)){ print "$k = $v \n"; }
} '
求 两项 交集
cat BuyMusic . 20090525 | perl - ne ' BEGIN{
$p1="600902000005416300";
$p2="600902000006211983";
$p_col=30;
$mob_col=0;
}END{
my @inter = grep {$a{$_}} keys %b; # 求交集
#print $p1,"=",join(",",keys %a),""n";
#print $p2,"=",join(",",keys %b),""n";
print "产品 $p1:",scalar keys %a," "n";
print "产品 $p2:",scalar keys %b," "n";
print "交集:",scalar @inter," "n";
}
chomp;
@lis=split /\|<>\|/ ;
if( $lis[ $p_col] eq $p1 ){
$a{$lis[$mob_col]}++;
}
if( $lis[$p_col] eq $p2 ){
$b{$lis[$mob_col]}++;
}
'
关键字 Top 10 ,输出源文本数据 :
perl - e '
my $num=10; # top 10
open(MYFILE, "<$ARGV[0]");
open(MYFILE2, "<$ARGV[0]");
# 关键字列数
while(<MYFILE>){@lis=split /\|<>\|/;$fck{$lis[1]}++ }
foreach $k (sort { $fck{$b} <=> $fck{$a} } keys %fck){
if(++$row>$num){last; }
$arr[@arr] = $k;
}
while(<MYFILE2>){@lis=split /\|<>\|/;
if(grep { $arr[$_] eq $lis[1] } 0..$#arr){
# print "$fck{$lis[1]}:$_"; #带 关键字出现次数输出
print ;
}
}
' qdSearch . log