awk太牛了,博大精深,学不透,学了不用,又忘。

所以花了一天,自己总结了基础,以后就当字典查(容易忘)。有不对的地方,忘大家指出。

[ganzl@cmdb ~]$ more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

概念:

(字段,记录,就是行跟列的意思啦,我自己取的):

字段:上面/etc/passwd内有7个字段。以":"分割,$1就是root。$0,$n:当前记录,当前记录的第N个字段
记录:有两行记录

这4个概念比较重要:
NF:字段数量
NR:记录行数
$NF:当前行最后一个字段的内容
$NR:当前记录的第NR个内容
例子:

awk '{FS=":"}NR==7||NF==8{print NF,$NF,NR,$NR}' /etc/passwd
awk -F: 'NR==2||NF==8{print NF,$NF,NR,$NR}' /etc/passwd

FS:字段分割符号,默认是空格
RS:记录分割符号,默认是空格

例子:

#!/bin/sh
exec <host.list
i=1
while read line
do
if [ $i -eq 4 ];then
echo -n "`echo $line|awk '{print $1}'`">>tmp.host
else
echo -n "`echo $line|awk '{print $1}'`,">>tmp.host
fi
((i++))
done df
df
df
df
dddddddddddddddddddddddddddddddd

3.txt

awk 'BEGIN{FS="\n";RS=""}{print $1,$2,$3}' 3.txt  #不在同一行--(变成)-->同一行,同时空白记录--(变成)-->""

ORS:记录输出分隔符
OFS:字段输出分隔符
例子:

awk 'BEGIN{FS="\n";RS="";OFS="###";ORS="???"}{print $1,$2,$3}' 3.txt

运算符

赋值运算符:
= += -= *= /= %= ^= **= 赋值语句

逻辑运算符:
||逻辑或 &&逻辑与

正则运算符:
~ !~ 匹配正则表达式和不关系运算符

关系运算符:< <= > >= != ==

算术运符:
+ - 加,减
* / & 乘,除与求余
+ - ! 一元加,减和逻辑非
^ *** 求幂
++ -- 增加或减少,作为前缀

三目运算符:?

例子:
awk 'BEGIN{a=5;a+=4;print a}'
awk 'BEGIN{a=1;b=2;print(a>2||b<9)}'
echo|awk 'BEGIN{a="aaa1000dbbb"}a~/abc/{print "ok"}'
awk 'BEGIN{a=11;if(a>9){print "ok"}}'
awk 'BEGIN{a=1;print a++,++a}'
awk 'BEGIN{a="b";print a=="c"?"yes":"no"}'

awk的正则

^ :行首定位符 /^root/ 匹配所有以 root 开头的行
$ :行尾定位符 /root$/ 匹配所有以 root 结尾的行
. :匹配任意单个字符 /r..t/
* :匹配 0个或多前导字符 (包括回车 ) /a*ool/ /a*ool/ 匹配0个或多a之后紧跟着ool的行,比如 ool ,aaaaool aaaaool 等
+ :匹配 1个或多前导字符 /a+b/ 匹配 1个或多个 a加 b的行,比如ab,aab 等
? :匹配 0个或 1个前导字符 /a?b/ 匹配 b或 ab 的行
[] :匹配指定字符组内的任意一个字符 /^[abc] 匹配以字母 a或 b或 c开头的行 开头的行
[^] :匹配不在指定字符组内任意一个字符 /^[^abc]/ 匹配不以字母 a或 b或 c开头的行
() :子表达式组合 /(rool)+/ 表示一个或多rool组合,当有一些 组合,当有一些 字符需要组合时,使用括号起来
| :或者的意思 /(root)|B/ 匹配 root 或者 B的行
\ :转义字符 /a \/\// 匹配 a//
~,!~:  匹配,不匹配的条 件语句 $1~/root/ 匹配第一个字段包含符root的所有 记
x{m} :x重复 m次 /(root){3}/ 注意这个括号
x{m,} :x重复至少 m次 /(root){3,}/
X{m,n} :x重复至少 m次,但不超过 n次

例子:
awk '/tcpdump/{print $0,NR}' /etc/passwd
ifconfig eth2|awk -F'[" ":]+' 'NR==2{print $4,$6}'|awk '{print $1}'
awk -F: '$1=="root"{print $0}' /etc/passwd netstat -nal| awk '/^tcp/{s[$NF]++}END{for(i in s)print i,s[i]}'
统计web服务器访问IP:
awk '{count[$1]++}END{for (ip in count){print ip,count[ip]}}' /var/log/httpd/access_log

awk的涂鸦的更多相关文章

  1. 【Win 10 应用开发】InkToolBar——涂鸦如此简单

    从WPF开始,就有个InkCanvas控件,封装了数字墨迹处理相关的功能,Silverlight到Win 8 App,再到UWP应用,都有这个控件,所以,老周说了3688遍,凡是.net基础扎实者,必 ...

  2. awk命令简介

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

  3. AR创意分享:儿童涂鸦遇上程序绘图

    第一节 临摹 小明经常临摹同桌小美的画作. 美术课上,老师表扬了小美的新作. 图1.1 小美的作品<蒙娜·毛虫的微笑> 临,是照着原作画:摹,是用薄纸张蒙在原作上面画. 第二节 借画 小明 ...

  4. awk使用说明

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

  5. awk应用

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

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

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

  7. shell——awk

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

  8. 【Linux】AWK入门

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

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

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

随机推荐

  1. 【学】React的学习之旅7-官方例子总结

    如果在标签里有注释,除了使用/**/之外,如果写在子标签中,外面还需要用{}包起来,指明这段是javascript代码,否则这段注释会直接显示在页面上,例如 render:function (){ r ...

  2. 解析JDK 7的动态类型语言支持

    http://www.infoq.com/cn/articles/jdk-dynamically-typed-language

  3. opengl入门学习

    OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...

  4. Spark Job的提交与task本地化分析(源码阅读八)

    我们又都知道,Spark中任务的处理也要考虑数据的本地性(locality),Spark目前支持PROCESS_LOCAL(本地进程).NODE_LOCAL(本地节点).NODE_PREF.RACK_ ...

  5. zzz

    开放平台(TOP)的API是基于HTTP协议来调用的,开发者(ISV)可以直接使用TOP提供的官方SDK(支持多种语言,包含了请求的封装,签名加密,响应解释,性能优化等)来调用,也可以根据TOP的协议 ...

  6. Spring Test+JUnit整合使用

    在做spring相关测试时比较麻烦,如果只用JUnit测试,需要没测有初始化一下applicationContext,效率比较底下,而且也有不足之处.具体见下文 导致多次Spring容器初始化问题 根 ...

  7. Unity3D人物头顶名称与血条更新与绘制

    using UnityEngine; using System.Collections; public class NPC : MonoBehaviour { //主摄像机对象 private Cam ...

  8. XE6 & IOS开发之开发者账号、苹果证书(2):关于苹果证书

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 1.关于苹果证书. 注意 ...

  9. Android性能优化典范

    来源:http://hukai.me/android-performance-patterns/#jtss-tsina 0)Render Performance 大多数用户感知到的卡顿等性能问题的最主 ...

  10. Scale和Resolution的含义及转换算法

    当我们在用arcgis server 构建切片时,我们会发现在缓存生成的conf.xml中有这样的片段: 在上述片段中<LODInfo>代表了每一级切片的信息,<LevelID> ...