awk基本用法
2016-03-09 10:31
267 查看
学习网址1
学习网址2
ls -l >> list.txt
NR(numer row)表示行,读取多个文件时连续计数,1、2。。。
FNR(file number row)表示行,读取多个文件时重新计数1、2.。。1、2、。。
ARGIND(arg index)表示参数索引
ARGV表示参数数组,索引为1、2.。。
pattern条件表示处理某个文件时,FILENAME=="test.txt",FILENAME==ARGV[1] ,ARGIND==1
输出第一列
输出第二列
输出第二行第一列
if语句
Awk完整形式
其中BEGIN和END是可选模块, pattern里面每读一行执行一次,BEGIN在加载数据前执行,END在加载数据完成后执行。单引号是为了将awk命令与linux命令区分开。pattern不写时表示任意条件, awk
'/^web/{T=$0;next;}{print T":\t"$0;}' test.txt 第一个中括号执行条件为行以web开头,第二个执行为任意条件,但是next会跳过当前行,忽略后面语法,执行下一行
Eg、输出字段数(NF->number of fileds)和行数(NR->numberof rows)
提前遍历全文
拆分
cat test
123.122.123.12 12121212
121.2332.121.11 232323
255.255.255.255 21321
123.122.123.12 12121212
123.122.123.12 1212121er2
123.122.123.12 12121212eer
123.122.123.12 12121212ere
255.255.255.255 21321
121.2332.121.11 232323
255.255.255.255 21321
命令
取字符前几位
awk脚本形式
eg:求学生平均成绩
zhangsan 80
lisi 81.5
wangwu 93
zhangsan 85
lisi 88
wangwu 97
zhangsan 90
lisi 92
wangwu 88
执行
来自: http://man.linuxde.net/sort
$0表示整行
输出前3列
学习网址2
ls -l >> list.txt
NR(numer row)表示行,读取多个文件时连续计数,1、2。。。
FNR(file number row)表示行,读取多个文件时重新计数1、2.。。1、2、。。
ARGIND(arg index)表示参数索引
ARGV表示参数数组,索引为1、2.。。
pattern条件表示处理某个文件时,FILENAME=="test.txt",FILENAME==ARGV[1] ,ARGIND==1
输出第一列
awk '{print $1}' list.txt
输出第二列
awk '{printf %d\n,$2}' list.txt
输出第二行第一列
awk 'NR==2 {print $1}' list.txt
if语句
awk '{if(NR<=2){print $0}}' list.txt
Awk完整形式
awk 'BEGIN{print"start"} pattern{print} END{print "end"}'
其中BEGIN和END是可选模块, pattern里面每读一行执行一次,BEGIN在加载数据前执行,END在加载数据完成后执行。单引号是为了将awk命令与linux命令区分开。pattern不写时表示任意条件, awk
'/^web/{T=$0;next;}{print T":\t"$0;}' test.txt 第一个中括号执行条件为行以web开头,第二个执行为任意条件,但是next会跳过当前行,忽略后面语法,执行下一行
Eg、输出字段数(NF->number of fileds)和行数(NR->numberof rows)
awk 'END{print NF,NR}' //在读入每一行的时,awk会将NR更新为对应的行号
提前遍历全文
awk 'BEGIN{while(getline<"file"){x+=$2+$3;i++};y=x/i}{if($2+$3>y)z++}END{print z}' file
拆分
ifconfig
|
awk
'{if(NR==2){split($2,a,":");print a[2]}}'
统计次数
cat test
123.122.123.12 12121212
121.2332.121.11 232323
255.255.255.255 21321
123.122.123.12 12121212
123.122.123.12 1212121er2
123.122.123.12 12121212eer
123.122.123.12 12121212ere
255.255.255.255 21321
121.2332.121.11 232323
255.255.255.255 21321
命令
awk '{name[$1]++ }; END {for (count in name) print count,name[count]}' test|sort
取字符前几位
awk脚本形式
eg:求学生平均成绩
zhangsan 80
lisi 81.5
wangwu 93
zhangsan 85
lisi 88
wangwu 97
zhangsan 90
lisi 92
wangwu 88
#!/bin/awk -f BEGIN{ print "start" } { a[$1]+=$2 b[$1]++ } END{ for(i in b){ print i,a[i]/b[i] } print "end" }
执行
awk -f awk_sogou.awk SogouQ.sample
awk -f awk_sogou.awk SogouQ.sample | sort -nk 2 #将输出结果按照第二列进行数字大小排序,不指定n的话会只取一个字符
awk -f awk_sogou.awk SogouQ.sample | sort -k 1.2 #将输出结果按照第一列进行大小排序,-k 1.2表示取第一个字段从第二个字符开始到第一个字段的最后一个字符
awk -f awk_sogou.awk SogouQ.sample | sort -nk 2 <span style="color: rgb(45, 55, 75); font-family: Verdana, Geneva, sans-serif; line-height: 17.98611068725586px;">-t:</span> #-t指定分隔符
来自: http://man.linuxde.net/sort
$0表示整行
输出前3列
ps -aux|grep java|awk '{i=1;while(i<3){printf $i;i=i+1;}print $i}'
相关文章推荐
- iOS---类方法(静态方法)和实例方法
- 【转】Cvmat与IplImage的相互转换
- 问题解决:psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
- (4) IOS笔记本——UITableView的基本应用
- andorid lint
- 单例模式
- App Store编辑推荐背后的秘密:70%为游戏
- WordCount程序中隐藏的秘密
- WordCount程序中隐藏的秘密
- 第6讲 PLL和ROM的IP核使用
- lzg_ad: 使用IBW构建一个Windows Embedded Standard 7镜像
- 怎么学会编程(阮一峰)
- HTTP权威指南 第七章 缓存
- linux输出 /dev/null
- 遇到的问题
- java 生成不重复的随机数
- Replica下的 highWatermark和 logEndOffset说明
- 解决ubuntu反复登录的问题
- Apache Jmeter 初识
- Qt无法输入中文问题解决