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 ...
随机推荐
- 如何通过 jQuery text() 和 html()
text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设置或返回表单字段的值 $("#btn1").c ...
- poj1988-种类并查集
题意:有N个立方体(1<=N <=30,000),相应地初始时每个立方体放在一个栈中,有两种操作:1.M X Y:把包含第X个立方体的栈中的所有立方体当做一个整体拿出来压入包含第Y个立方体 ...
- Idea 使用maven+tomcat的时候,编译指定的Profile
To build a artifact with a profile you have to create a Maven Run/Debug configuration as in the foll ...
- 计算文件的MD5值(Java & Rust)
Java public class TestFileMD5 { public final static String[] hexDigits = { "0", "1&qu ...
- hibernate学习笔记4---HQL、通用方法的抽取实现
一.通用方法的抽取实现 由于hibernate中对增删改查的一切操作都是面向对象的,所以将增删改查抽取成通用方法,以满足不同的表的增删改查操作,简化jdbc代码. 具体例子如下: package cn ...
- 基于Linux的oracle数据库管理 part5( linux启动关闭 自动启动关闭 oracle )
主要内容 1. 数据库自动启动与关闭 数据库自动启动与关闭 - 单数据库模式 启动监听器及数据库 启动脚本: #! /bin/bash su - oracle<<EOF lsnrctl s ...
- EditText控件实现只读
android的EditText控件实现只读只需设置三个方法: editText.setCursorVisible(false);//隐藏光标 editText.setFocusable(fals ...
- Cookie操作类 实现记住用户名和密码的功能
import java.util.Hashtable;import java.util.Iterator;import java.util.Set;import javax.servlet.http. ...
- UVa 1626 (输出方案) Brackets sequence
正规括号序列定义为: 空序列是正规括号序列 如果S是正规括号序列,那么[S]和(S)也是正规括号序列 如果A和B都是正规括号序列,则AB也是正规括号序列 输入一个括号序列,添加尽量少的括号使之成为正规 ...
- IE6下margin出现双边距
在IE6下,块元素有浮动和横向margin的时候,横向的margin值会被放大成两倍 解决方法:添加display:inline; eg:下面的例子在IE6下会有两倍边距 <style> ...