##############取第一列中字符串长度小于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'
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'