awk笔记

##############取第一列中字符串长度小于3的行,注意cat文本的编码格式是utf-8,若文本格式不是则打开TXT,另存为时设置编码为utf-8###################
cat e://awk_data1.txt | awk '{if(length($1)<3) print$1}' >e://11.txt




#################输出文件12的第二行第3列的数据,输出到文件22.txt#####################
cat 12.txt | awk 'NR==2{print $3}' >22.txt    
cat 12.txt | awk '/1/'                           # 输出第一行数据
cat 12.txt | awk '/1/,/5/'                       #输出1~5行数据
cat e://222.txt | awk 'NR==2,NR==5{print $1}'    #输出2~5行数据
cat e://222.txt | head -n 2                      #输出前两行数据
cat e://222.txt | tail -n 2                      #输出后两行数据
cat e://222.txt | awk '1; NR ==10 { exit }'      #输出前10行数据   第一句对当前行进行输出。第二句判断是不是已经到了第10行,如果是则退出。






####################在awk中调用系统变量必须用单引号,如果是双引号,则表示字符串##################
Flag=abcd 
awk '{print '$Flag'}'   结果为abcd 
awk '{print  "$Flag"}'   结果为$Flag






###################输出第三列第四列数据,中间用;隔开###################
cat 12.txt | awk -F "\t" '{print $3 ";" $4}'  >e:/12344.txt
echo '1 2 3 4 5 6' | awk '{ORS="#"}{print}'   #ORS输出记录分隔符,结果1 2 3 4 5 6#
echo '1 2 3 4 5 6' | awk '{OFS="#"}{print $1,$2,$3,$4}'     #OFS输出域分隔符,结果:1#2#3#4


FS 输入字段分隔符(缺省为:space:),相当于-F选项
awk -F ':' '{print}' a    和   awk 'BEGIN{FS=":"}{print}' a 是一样的
cat e://222.txt |awk -F ';' '{print NF}'     ########输出文件222.TXT的每一行用分隔符";"分割后字段个数








##########################输出一连续数字###################################################
法一:echo | awk 'BEGIN{ORS=" "} {for(i=1;i<=8;i++)print i}'   #######横排1-8
法二:seq 8 | awk 'BEGIN{ORS=" "}{print}'                      #######横排1-8
法三:seq 8 | tr "\n" " "                                      #######横排1-8
法四:seq 8                                                    #######竖排1-8








##########################Awk数组################################################
awk 'BEGIN{info="it is a test";lens=split(info,tA," ");print length(tA),lens;}'           ########length返回字符串以及数组长度,split进行分割字符串为数组,也会返回分割得到数组长度  


awk 'BEGIN{info="it is a test";split(info,tA," ");for(k in tA){print k,tA[k];}}'         #################### asort对数组进行排序,返回数组长度。




awk 'BEGIN{info="it is a test";split(info,tA," ");for(k in tA){print k,tA[k];}}'                           ########for…in 输出,因为数组是关联数组,默认是无序的。所以通过for…in 得到是无序的数组。
awk 'BEGIN{info="it is a test";tlen=split(info,tA," ");for(k=1;k<=tlen;k++){print k,tA[k];}}'             ########如果需要得到有序数组,需要通过下标获得。注意:数组下标是从1开始,与c数组不一样。


 


 


################awk统计文本里某一列重复出现的次数#######################
cat logfile | awk '{a[$3]++}END{for(i in a){print i,a[i] | "sort -k 1"}}' 
cat 11.txt | awk 'BEGIN {print "staple_id,mall_id"}{time="2016-07-20"}{line[$1]++}END{for(i in line){print  i "," line[i]}}' 
cat logfile | awk '{print $3}' | uniq -c








###############################awk结果排序###############################
   |sort -k 2 -rn
    -k为排序关键列 
    -r为降序排序
    -n按算术值对数字字段排序。数字字段可包含前导空格、可选减号、十进制数字、千分位分隔符和可选基数符。对包含任何非数字字符的字段进行数字排序会出现无法预知的结果。








###############################不解压文件提取压缩文件中的关键字##############
    zcat pdd-mms-php-log.2016081200.log.gz | grep 'exResq'







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值