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 ...
随机推荐
- OOP数据库操作方法
一.数据库操作 连接MYSQL数据 面向对象访问数据库e.g. 造对象 $dx=new MySQLi("localhost","root","123& ...
- java web每天定时执行任务
第一步: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ...
- UVA 11427 Expect the Expected (期望)
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=26&pa ...
- Oracle Report : REP-1219
+---------------------------------------------------------------------------+ 总帐管理系统: Version : 12.0 ...
- Python 数据类型转换
Python提供的基本数据类型主要有:布尔类型.整型.浮点型.字符串.列表.元组.集合.字典.日期等等 函数 描述 type(x) x的数据类型 ...
- [CFGym101061G] Repeat it(逆元)
题目链接:http://codeforces.com/gym/101061/problem/G 题意:给一个数字n,让你重复m次,求最后这个数对1e9+7取模的结果. 思路:设数字n长度为k,重复m次 ...
- orm 通用方法——GetOneModel 条件查询一个对象
数据连接层的方法封装成通用方法是很有必要,节省不必要的重复写代码. Golang的orm.xorm框架没有封装这些操作. 这里是一个查询单个对象的方法. 此处抛砖引玉,大家继续完善. 通用方法定义代码 ...
- Winform——计算器
namespace 计算器2._0 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } pr ...
- 连接mongo的服务提示:HTTP Status 500 - com.mongodb.MongoException$Network: can't call something
连接mongo的服务提示以下错误 原因:达到了mongodb启动时预设的最大连接数,无法创建新的连接 HTTP Status 500 - com.mongodb.MongoException$Netw ...
- Linux下Web服务器环境搭建LNMP一键安装包[20130911更新]
2012年08月14日 ⁄ LNMP ⁄ 评论数 73 ⁄ 被围观 25,200次+ 最新版本:lnmp-2.4 安装说明:请保证服务器能够正常上网.服务器系统时间准确.yum命令可以正常使用! 1. ...