linux 文本处理
awk
正则表达式 awk -F '\t' '$1 !~ /_MusicDailyRec$/' awk -F '\t' '$1 !~ /._MusicDailyRec$/' awk -F '\t' '$1 ~' 数学运算 聚合统计 awk -v min=$m -v max1=$n -F "\t" '{if($NF +0 >=max1){impress_alg+=$2;impress_yy+=$3;click_alg+=$4;click_yy+=$5;sun_alg+=$6;sub_yy+=$7;sub_other+=$8}} END{print sun_alg,sub_yy, sun_alg/click_alg, sub_yy/click_yy, click_alg/impress_alg,click_yy/impress_yy, sun_alg/click_alg/(sub_yy/click_yy), click_alg/impress_alg/(click_yy/impress_yy),sub_other}' log_analyze awk -F '\t' '{if($3=="time") {user_count+=1;sum_play+=$2}} END{print user_count,sum_play}' 用awk合并文件。比join更灵活。 awk -F $'\001' '{for(i=0;i<NF;i++)print $i}’ /disk6/leilei.dingll/New_Mornitor_KR_4_no_online/conf/sql awk -F $'\001' 'BEGIN{request=0;rep=0;rep_adopt=0;adopt=0;cost=0}{if($1=="seed" && (($2>=128 && $2<256) || ($2>=384 && $2<512) || ($2>=640 && $2<768) ||($2>896)))request+=$4;rep+=$5;rep_adopt+=$6;adopt+=$7;cost+=$15}END{print rep/request,adopt/rep,cost}' cust_type_tag_effect_20151105.dat awk -F $'\001' '{for(i=0;i<NF;i++)print $i}’ awk -F $'\001' 'BEGIN{request=0;rep=0;rep_adopt=0;adopt=0;cost=0}{if($1=="seed")request+=$4;rep+=$5;rep_adopt+=$6;adopt+=$7;cost+=$15}END{print rep/request,adopt/rep,cost}' cust_type_tag_effect_20151105.dat
多文件与数组
awk -F '\t' '{arr[$0]++} END{ for (key in arr) print key,arr[key]}' file1 file2
查每一行是否在文件中
awk -F"&|=" 'BEGIN{while(getline < "./test_cust"){dict[$1]=1}} {if($30 in dict){print $0}}' ./log.1
sort
sort -f -k data.txt
sort 是很有趣的命令,他可以帮我们进行排序,而且可以依据不同的数据型态来排序喔! 例如数字与文字的排序就不一样。此外,排序的字符与语系的编码有关,因此, 如果您需要排序时,建议使用 LANG=C 来让语系统一,数据排序比较好一些。
paste
join
sed
简介
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
定址
可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。

浙公网安备 33010602011771号