shell语句记录-awk
cat ./daily_uv/daily_uv_20140104 | awk '{fr[$1]+=$3; k=$1 "_" $2; av[k]+=$3;} END{for (k in fr) {print k,fr[k]} for (k in av) {print k,av[k]}}'
1. 最基本的用法
awk '{print $1}' ./daily_messageEnter_uv/daily_messageEnter_uv_20131226
即 awk '{*****}' filename
2. awk的格式化输出,和C语言的printf没什么两样
如awk '{printf "%s %s", $1,$2}' ./filename
注意!!!
此时输出的效果与awk '{print $1}' 不同,1中的print会自动换行,但这里的printf如果不指定的话是连着输出的,输出方式:输出第一列的第一行,第二列的第一行,然后是第一列的第二行,第二列的第二行 ………………
如果希望换行,那么:加上\n
即awk '{printf "%s %s\n", $1,$2}' ./filename
也可以加上\t等
3. 过滤记录
awk '$1=="android" && $3>=10000 ' filename
输出 android 3.4.3 82256 65735
android 3.2.1 10503 8540
android 3.3.0 82071 66686
android 3.4.0 18517 15031
此时四列满足条件的数据都将被输出(默认情况)
如果需要输出指定的数据需要使用前面提到的输出方法。
$ awk '$1=="android" && $3>=10000 {print $1,$2} ' filename
此时可以总结这样的规律:awk的语句是写在'***' 中的,{**}中写输出的内容,语句中间没有符号,顺着向后写即可
注意!!!!
$1=="android" 这里的字符串需要用双引号
3.1 输出行号
awk '$1=="android" && $3>=10000 {print NR,$1,$2}’ filename
4. 指定分隔符
awk -F ’;‘ '{print NR,$1,$2}‘
-F可以指定分隔符,默认是Tab或是空格
4.1 内建变量
awk的一些内建变量:
| $0 | 当前记录(这个变量中存放着整个行的内容) |
| $1~$n | 当前记录的第n个字段,字段间由FS分隔 |
| FS | 输入字段分隔符 默认是空格或Tab |
| NF | 当前记录中的字段个数,就是有多少列 |
| NR | 已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。 |
| FNR | 当前记录数,与NR不同的是,这个值会是各个文件自己的行号 |
| RS | 输入的记录分隔符, 默认为换行符 |
| OFS | 输出字段分隔符, 默认也是空格 |
| ORS | 输出的记录分隔符,默认为换行符 |
| FILENAME | 当前输入文件的名字 |
如果是多个分隔符可以写成
awk -F '[,;]'
指定输出分隔符 awk -F OFS="\t" '{print $1}' filename
5. 字符串匹配
awk '$1 ~ /an.*|ipad/ {print $0}' filename
‘|’符号的左右不要随意添加空格
awk '$1 ~ /an.*|ipad/ || NR==1 {print $0}' filename
即输出表头
awk可以像grep一样的去匹配第一行,就像这样:
awk '/ipad/' filename
模式取反的例子:
awk '$1 !~ /an.*|ipad/ {print $0}' filename
shell语句记录-awk的更多相关文章
- 常用的shell语句 【awk】去重,排列
目的:从日志access.log中,筛选出IP来,并统计每个IP出现的次数,然后显示出来. 因为:awk = 扒IP shot = 排序 uniq = 去重 所以:awk '{print $1} ...
- shell编程之awk命令详解
shell编程之awk命令详解 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; out ...
- Linux记录-AWK语法(转载)
1.原理 awk,一个行文本处理工具,逐行处理文件中的数据 语法:awk 'pattern + {action}' 说明:(1)单引号''是为了和shell命令区分开:(2)大括号{}表示一个命令分组 ...
- 转shell中的awk用法详解
awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本文件中的信息 调用awk: 第一种,命令行方式 ...
- Bash shell命令记录和CentOS的一些技巧
①CentOS的实用技巧: 一.按下ctrl+alt+F2可由图形界面切换至命令行(shell窗口),按下ctrl+alt+F1可由命令行切换至图形界面(前提是安装CentOS时软件选择项选择安装了图 ...
- awk循环语句-【AWK学习之旅】
AWK中两种循环语句:if-else 和 while 控制流语句: 1.if-else 求总数,平均值: [root@monitor awkdir]# awk '$3>6 {n = n ...
- shell 强大的awk
from here 小用法,使用awk来对文件随机抽取n行 awk 'BEGIN{srand()} {print rand()"\t"$0}' input_file | sort ...
- shell下的 awk/sed/grep/seq/tr
转自:实例手册 https://github.com/liquanzhou/ops_doc/blob/master/shell%E5%AE%9E%E4%BE%8B%E6%89%8B%E5%86%8C. ...
- linux shell学习记录
1.shell脚本开始以 #! /usr/bin 这个叫做Shebang 这个指定解释器的路径 2.shell 一些配置在~/.bashrc中,运行的历史shell命令在~/.bash_history ...
随机推荐
- excel读取 工具类
package cn.yongche.utils; import java.io.File; import java.io.FileInputStream; import java.io.IOExce ...
- Ext的正则表达式
http://www.cnblogs.com/azai/archive/2010/12/31/1923140.html 今天看到一篇关于Extjs正则表达式比较系统的总结. 使用extJs时能常用 ...
- BZOJ 2006 超级钢琴(划分树+优先队列)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2006 题意: 给出一个数列A,L,R,构造出一个新的集合,集合中的数字为A中任意连续t( ...
- java-基础练习题1
/** 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,* 假如兔子都不死,问每个月的兔子总数为多少?* 1.程序分析: 兔子的规律为数列1, ...
- 无锁编程(五) - RCU(Read-Copy-Update)
RCU(Read-Copy Update) RCU就是指读-拷贝修改,它是基于其原理命名的.对于被RCU保护的共享数据结构,读操作不需要获得任何锁就可以访问,但写操作在访问它时首先拷贝一个副本,然后对 ...
- 权限控制框架Shiro简单介绍及配置实例
Shiro是什么 http://shiro.apache.org/ Apache Shiro是一个非常易用的Java安全框架,它能提供验证.授权.加密和Session控制.Shiro非常轻量级,而且A ...
- UVa 424 Integer Inquiry
之前杭电上也做过a + b的高精度的题,不过这道题的区别是有多组数据. 之前做的时候开了3个字符数组a,b,c,在计算的时候还要比较a,b长度,短的那个还要加'0',还设置了一个add来存放进位. 现 ...
- UVa 11090 Going in Cycle!!【Bellman_Ford】
题意:给出n个点m条边的加权有向图,求平均值最小的回路 自己想的是用DFS找环(真是too young),在比较找到各个环的平均权值,可是代码实现不了,觉得又不太对 后来看书= =好巧妙的办法, 使用 ...
- Maven之 环境搭建
这几天开始了maven的学习,看了孔浩老师的视频(http://pan.baidu.com/s/1o7bg2h0),以及黄勇大牛的博客(http://my.oschina.net/huangyong/ ...
- Linux 系统时钟(date) 硬件时钟(hwclock)
/********************************************************************* * Linux 系统时钟(date) 硬件时钟(hwclo ...