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

查看自己ubuntu当前的awk

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

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

1.awk的变量

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

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

head -1 /etc/passwd > test.txt

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ORS 同理

2.awk的格式化输出

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

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

%d 十进制整数

%f 浮点数

%s 字符串

%% 百分号

- 左对齐

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

3.awk的算术运算

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

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

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

4.模式

awk '模式{命令}‘ file

模式能够是一下几种:

1.正則表達式

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

2.表达式

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

3.BEGIN和END

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

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

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

比如:

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. IE网页js语法错误2行字符1,FF中正常

    今天开发过程中,突然遇到此奇葩问题,我之前以为是我js打开模态窗体传递的url参数有问题,我使用open没问题.使用模态窗体则会先弹出此错误然后再显示新打开的界面.网上查了许久,总结解决方案如下: 1 ...

  2. LeetCode——Populating Next Right Pointers in Each Node II

    Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...

  3. 蜘蛛侠天堂,打死我mac键盘

    今天是周末,在我租住的房间,以一个离奇事件. 一个蜘蛛侠天堂,趴在我的假期车窗玻璃,爬下沿着玻璃.特别糟糕.可以飞檐走壁. 可惜体力不支,摔死在我的mac键盘上. 有图有视频. 视频链接:http:/ ...

  4. NginX issues HTTP 499 error after 60 seconds despite config. (PHP and AWS)

    FROM: http://stackoverflow.com/questions/15613452/nginx-issues-http-499-error-after-60-seconds-despi ...

  5. 动态创建按钮的JS

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML>  <HEA ...

  6. 计算机视觉与模式识别代码合集第二版two

    Topic Name Reference code Image Segmentation Segmentation by Minimum Code Length AY Yang, J. Wright, ...

  7. OCP读书笔记(3) - 使用RMAN恢复目录

    创建恢复目录 在hndx上创建恢复目录:[oracle@oracle admin]$ export ORACLE_SID=hndx[oracle@oracle admin]$ sqlplus / as ...

  8. Jeecg社区wiki在开放,最终能够在线看文档啦!!!

    Jeecg社区wiki在开放,最终能够在线看文档啦! .! 2014-12-18 scott JEECG jeecg开源社区wiki正式启动了.方便大家看文档 訪问地址是: http://osbaba ...

  9. Linux 内核升级步骤

    1.解压内核文件包#xz -d linux-3.2.63.tar.xz #tar xvf linux-3.2.63.tar 2.拷贝解压文件到/usr/src#cp -r linux-3.2.63 / ...

  10. hdu1495(bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题意:有三个杯子,开始时第一个杯子装满水(体积为a),倒来倒去,得到其中2个杯里的水的体积都为a ...