我前几天写的sed,这个时候继续了解它的兄弟,awk,两者都使用,一种感觉。既可以用来处理场。假设你想要做文本处理。sed删除。匹配,一些频繁更换使用,假设每一行文本,你想深入,一些每行和列处理的,例如,统计,格式化输出。awk就能够派上用场了

查看自己ubuntu当前的awk

which awk,其有用的是/usr/bin/mawk

在学习sed篇中,我们知道,sed是读取文本的每一行到一个模式空间,然后对模式空间的内容进行处理。事实上awk差点儿相同。它也是对模式空间进行处理。可是它做的处理动作时"切片"

1.awk的变量

为什么要先说变量呢。由于不用变量,awk基本上就是废(游戏玩多了^-^)

首先我们把/etc/passwd里面的第一行取出来备用

  1. head -1 /etc/passwd > test.txt

$0  当前处理的记录(默认是行。除非指定RS)

  1. awk 'BEGIN{FS=":"}{print $0}' test.txt
  1. root:x:0:0:root:/root:/bin/bash

$1---$n 当前的第几个字段。和命令行參数类似

  1. awk 'BEGIN{FS=":"}{print $1,$3}' test.txt

FS 这里记住:F表示域field。S表示分隔seperate

这里有两种写法:我喜欢用这样的,简洁明了

  1. awk -F: '{print $1,$2,$3}' test.txt

RS 想想,R表示记录record,S同上

  1. awk 'BEGIN{RS=":"}{print $1,$3}' test.txt

NF number of field 能够理解为多少列

  1. awk 'BEGIN{FS=":"}{print NF}' test.txt

NR number of record 能够理解为多少行

  1. awk 'BEGIN{FS=":"}{print NR}' test.txt

OFS  FS是处理这行的时候的分隔,O是指输出,OFS就是指输出时候的分隔符

  1. awk 'BEGIN{FS=":"}{print $1,$2,$3}' OFS="#" test.txt

ORS 同理

2.awk的格式化输出

awk的处理完文本之后还能够依照格式化进行输出。非常强大吧,事实上说白了就是printf

  1. awk -F: '{printf "%s#%s#%s\n" ,$1,$2,$3}' test.txt

%d 十进制整数

%f 浮点数

%s 字符串

%% 百分号

- 左对齐

尽管简单,可是灵活运用,效果特殊

3.awk的算术运算

awk支持的运算符:+ - * / % **  awk甚至提供了一些数学函数sin(x),cos(x)等

还能够做一些统计运算。统计某一列的值

  1. awk '{ sum += $1 }; END { print sum }' file
  1. awk 'NR!=1{a[$6]++;} END {for (i in a) print i ", " a[i];}'

4.模式

awk '模式{命令}‘ file

模式能够是一下几种:

1.正則表達式

  1. awk -F : '/^r/{print $1}' /etc/passwd

2.表达式

  1. awk -F: '$3>=500{print $1,$3}' /etc/passwd
  2. awk -F: '$7 ~/bash$/{print $1,$7}' /etc/passwd
  3. awk -F: '$7 !~/bash$/{print $1,$7}' /etc/passwd

3.BEGIN和END

BEGIN{ 这里面放的是运行前的语句 }

END {这里面放的是处理全然部的行后要运行的语句 }

{这里面放的是处理每一行时要运行的语句}

比如:

  1. awk 'BEGIN{test="123";print test}'

发现的事实,没有文件也可以用awk,由于BEGIN它不依赖于输入,但请注意,打印,而无需使用内部变量$

尝到awk的更多相关文章

  1. linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)

    本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下一. 管道| / 重定向> / xargs 如:1. 管道和重定向的区别:具体可以见 http://www. ...

  2. awk命令简介

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...

  3. awk使用说明

    原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...

  4. awk应用

    h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...

  5. 3.awk数组详解及企业实战案例

    awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...

  6. shell——awk

    awk -F"分隔符" "command" filename awk -F":" '{print $1}' /etc/passwd 字段引用 ...

  7. 【Linux】AWK入门

    什么是AWK AWK是一种用于处理文本的编程语言工具,一个模式匹配程序.一个典型的示例是将数据转换成格式化的报告. 在命令行输入如下awk命令: awk -F":" '{ prin ...

  8. 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od

    awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上.并且可以使用管道, input | awk ''  | output 1.首先要知道形式 awk 'command' fi ...

  9. sed awk grep三剑客常用

    sed的常用用法: awk的常用用法: grep的常用用法: 除了列出符合行之外,并且列出后10行. grep -A 10 Exception kzfinance-front.log 除了列出符合行之 ...

随机推荐

  1. 使用iftop网络流量监控

    iftop这是一个非常有用的工具.下面的命令监视无线网卡在我的笔记本 iftop -i wlan0 比如,我现在玩音乐视频.iftop显示的信息: 基本说明: 1. 屏幕主要部分都是表示两个机器之间的 ...

  2. A*寻路算法的实现

    原理:http://www.cppblog.com/christanxw/archive/2006/04/07/5126.html 算法理论请到原理这个传送门,代码中的注释,已经比较详细,所以我不会讲 ...

  3. 解决Andriod使用HttpURLConnection 失败问题

    在Android的Activity中使用HttpURLConnection连接到服务端时抛出异常,Access denied.第一个想到是权限问题.然后就尝试将INTERNET权限加上:在Manife ...

  4. phprpc 使用实例(同时有Java、Android和Delphi客户端的例子)

    PHPRPC 是一个轻型的.安全的.跨网际的.跨语言的.跨平台的.跨环境的.跨域的.支持复杂对象传输的.支持引用参数传递的.支持内容输出重定向的.支持分级错误处理的.支持会话的.面向服务的高性能远程过 ...

  5. CentOS 6.5安装Erlang/OTP 17.0

    CentOS 6.5安装Erlang/OTP 17.0 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Erlang眼下已经是Fedora和Debian/ ...

  6. RIA Test:try catch 对 Error #1009 (无法访问空对象引用的属性或方法)的处理

    功能: 实现登录账户的强制登录, 用If 判断当前账户是否可用.若可用,则跳出if体直接登录,若不可用,则进入If体点击 “强制登录” 按钮. 问题:如果不可用,则if 条件中的对象不可见,这样程序会 ...

  7. 【VB/.NET】Converting VB6 to VB.NET 【Part II】【之四】

    第四部分 原文 DLLs, DAO, RDO, ADO, and AD.NET; the History of VB DBs In the early versions of VB, there we ...

  8. .net Mvc文件下载的功能,大文件下载完成之后修改数据库功能

    原文:.net Mvc文件下载的功能,大文件下载完成之后修改数据库功能 我服务器上文件只能下载一次,下载了之后就不能下载了,大文件或网速不好时,可能服务端文件流发送完了,客户端还没下载完,导致下载失败 ...

  9. Codeforces 461B - Appleman and Tree 树状DP

    一棵树上有K个黑色节点,剩余节点都为白色,将其划分成K个子树,使得每棵树上都仅仅有1个黑色节点,共同拥有多少种划分方案. 个人感觉这题比較难. 如果dp(i,0..1)代表的是以i为根节点的子树种有0 ...

  10. hdu1081(最大子矩阵)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1081 分析:a[i][j]代表第i行,前j个数据的和:那么由a[i][j]可得sum[k][long] ...