環(huán)境設(shè)置:如果有系統(tǒng)字符編碼 沖突,在當(dāng)前
vim ~/.bash_profile 下加入
LANG=zh_CN
LC_ALL=zh_CN.UTF8
export LANG LC_ALL
字符編碼轉(zhuǎn)化:
# 由decode解析,默認(rèn)會(huì)使用 系統(tǒng)編碼 輸出
# 在 linux 下面其實(shí)等價(jià) encode("UTF-8", decode("GBK",$_));
perl -MEncode -ne 'print decode("GBK",$_);' file.txt
判斷數(shù)據(jù)是否符合輸出:
echo "121" |perl -ne 'print if /2/;' #print 123
匹配正則group輸出:
echo "abc121a" |perl -ne 'print $1 if /(\D+)/;' #print abc
大小寫(xiě)轉(zhuǎn)化:
# 全部 大小轉(zhuǎn)小寫(xiě)
echo "ABC1C2cGJ" |perl -ne 'tr/[A-Z]/[a-z]/; print ;' #print
# "L 中間全部小寫(xiě) "E ; "U 中間全部大寫(xiě) "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
重復(fù)列輸出:
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"; }
}'
結(jié)果比如:
百度手機(jī)在線 = 7
中興 = 2
萬(wàn)信恒通 = 2
還比如:查看各用戶(hù) 有多少個(gè)進(jìn)程
ps -ef |perl -ane '$a{$F[0]}++;END{
while(($k,$v)=each(%a)){ print "$k = $v \n"; }
}'
求 兩項(xiàng) 交集
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 "產(chǎn)品 $p1:",scalar keys %a," "n";
print "產(chǎn)品 $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]}++;
}
'
關(guān)鍵字 Top 10 ,輸出源文本數(shù)據(jù) :
perl -e '
my $num=10; # top 10
open(MYFILE, "<$ARGV[0]");
open(MYFILE2, "<$ARGV[0]");
# 關(guān)鍵字列數(shù)
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]}:$_"; #帶 關(guān)鍵字出現(xiàn)次數(shù)輸出
print ;
}
}
' qdSearch.log
整理 m.tkk7.com/Good-Game