awk是啥?

  awk(奥克)是linux中一个强大的分析工具,linux面试必考

[root@rainbol ~]# awk
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options: GNU long options: (standard)
-f progfile --file=progfile
-F fs --field-separator=fs
-v var=val --assign=var=val
Short options: GNU long options: (extensions)
-b --characters-as-bytes
-c --traditional
-C --copyright
-d[file] --dump-variables[=file]
-e 'program-text' --source='program-text'
-E file --exec=file
-g --gen-pot
-h --help
-L [fatal] --lint[=fatal]
-n --non-decimal-data
-N --use-lc-numeric
-O --optimize
-p[file] --profile[=file]
-P --posix
-r --re-interval
-S --sandbox
-t --lint-old
-V --version To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version. gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output. Examples:
gawk '{ sum += $1 }; END { print sum }' file
gawk -F: '{ print $1 }' /etc/passwd

普通打印

awk '{print}' access.log       #打印所有列  或者 $0
awk '{print $1}' access.log #打印第一列
awk '{print $1,$4}' access.log #打印第一列第四列,注意中间用英文逗号分隔
awk '{print $1,"\t",$4}' access.log #\t表示在每一列使用制表符之间对齐,方便查看格式
awk '{print $1 $4}' access.log  #如果不加逗号或者加入空格,awk做拼接操作,$1和$4就拼接在一起,所以','为awk默认分隔符,其代表一个空格

  #

行列号打印  NR(number of record)  NF(field of record)

awk '{print NR "\t" $1,"\t",$4}' access.log    #在第一列插入行号
awk '{print NF "\t" $1,"\t",$4}' access.log #在第一列插入该行的所有列(注意: awk默认是以空格计算间隔的列)
awk '{print $NF}' access.log   #打印最后一列的内容
awk '{print $(NF-1)}' access.log   #打印最后第二列的内容

  

逻辑判断式

awk '$1!="192.168.1.1" {print $1 ,$4}' access.log    #打印第一列中没有192.168.1.1的ip号,注意不加引号默认为数字判断
awk 'NF!=2 {print $0}' access.log    #打印中NF中不是2段的数据

自定义分割符

#输入分割符
awk 'BEGIN{FS=","}{print $1,$2}' access.log #将默认空格分割符变为默认','分割符,使得遇到','自动分割
#输出分割符
awk 'BEGIN{OFS=","}{print $1,$2}' access.log #将输出的默认空格分割符变为','
awk 'BEGIN{FS=",";OFS=","}{print $1,$2}' access.log    #将输出的默认空格分割符变为','

多文件拼接

awk '{print $0}' a.txt b.txt  ...  #多文件拼接直接在文件后面加文件就行了

awk '{print FIRENAME,$0}'  a.txt   #FIRENAME加入一列文件名,方便查看文件

awk '$1="**.**.**.**"{print $0}' access.log    #如果不想要别人看到某一列的内容并替换为其他可以这么写

甚至还可以计算

[root@rainbol logs]# awk '{a=1;b=3;print a+b}'

4
#但注意如果字符串中数字和其他字符拼接在一起,如:a = 'aa123',b不变,那么结果为3,如果a='123aa',b不变,结果为126

awk正则表达式

/abc/
#可以
"abcxx"
"xxxabcxxx"

#不可以
"axxbxxc"
"ab c"
只要abc连续都配置 awk '/abc/{print$0}' a.txt  #按行搜索只有符合正则的行都打印出来
/a.c/
#可以
"abc"
"a c" #不可以
"acb"
"ac"
"aaacc" .表示任意字符,注意是一个,如果用两个那就是/a..c/,如果就是想匹配a.c怎么办,使用转义字符/a\.c/
/^abc/
#可以
"abcsad" #不可以
"aabc" ^表示匹配字符串开头的,abc要出现在最前面才行
$与其正好相反,/abc$/表示abc要出现在最后面才行
/a[]c/
#可以
"a1c"
"a2c"
"a3c"
#不可以
"abc"
"a11c"
括号表示a和c中间必须包括1,,3中间的任意一个就行了
当还可以这样/a[a-z]c/ /a[-]c/ /a[A-Z]c/ /a[a-zA-Z0-]/  
/a[^a-z]c/  #在方括号中出现^表示非,也就是不能出现a-z的字母  所以"abc"是错的
/a*c/
#可以
"aaaaaac"
"c"
#不可以
"ccca"
# *表示匹配0个或者多个a,匹配为*号前面的一个字符 /a+c/
#可以
"ac"
"aaaaac"
#不可以
"c"
# +表示匹配1个或者多个a,匹配为+号其那面的一个字符 /a?c/
#可以
"c"
"ac"
#不可以
"aaaac"
# ?表示匹配0个或者1个a,匹配为?号前面的一个字符
/ab{}c/
#可以
"abbbc"
#不可以
"abc"
"abbc" #{}表示匹配次数,{}表示前面一个字符必须要出现3次才能匹配,多也不行少也不行   /ab{3,5}/  #逗号表示 到..之间都可以,可以出现3次或者出现4次或者出现5次,并且包括3和5   /ab{3,}c/  #出现包括3个b,后面多少b都无所谓
/(ab)+c/
#可以
"abc"
"ababc"
#不可以
"abbc" # ()小括号表示在括号内看做一个整体,小括号后面可以接匹配规则

其他

  猛击这里

awk命令笔记的更多相关文章

  1. awk命令分析日志的简单笔记

    awk是一个文本分析工具,可以用来进行流量日志分析 之前无意中看到了这个命令,简单记一下笔记 ,在打线下的时候可能会有用 awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gaw ...

  2. awk 学习笔记

    awk的语法有两种形式 awk [options] 'script' var=value file(s) awk [options] -f scriptfile var=value file(s) 选 ...

  3. awk命令

    awk 手册   原文 Table of Contents 1. awk简介 2. awk命令格式和选项 2.1. awk的语法有两种形式 2.2. 命令选项 3. 模式和操作 3.1. 模式 3.2 ...

  4. (转)awk命令

    转自:http://man.lupaworld.com/content/manage/ringkee/awk.htm#id2874788 整理:Jims of 肥肥世家 <jims.yang@g ...

  5. shell编程之awk命令详解

    shell编程之awk命令详解 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; out ...

  6. linux awk学习笔记

    awk学习笔记 awk语法格式 awk '{pattern + action}' {filenames} awk作用 awk的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后 ...

  7. AWK命令使用

    前言 文本处理三剑客中,grep强在文本查找,sed强在文本处理,现awk强在文本查找后的输出处理.awk可以在处理文本的过程中使用编程结构(变量.条件判断.循环)以及其内置的变量,这就是它强大的地方 ...

  8. 【转】awk学习笔记

    Awk学习笔记 整理:Jims of 肥肥世家 <jims.yang@gmail.com> Copyright © 2004 本文遵从GPL协议,欢迎转载.修改.散布. 第一次发布时间:2 ...

  9. 使用 awk 命令统计文本

    2022-04-19 11:25:15.008,b4d13bfca8fe4b93a85e65a88520d945,LogScheduler#printLog,10ms,Y,xxxxxxxx 2022- ...

随机推荐

  1. Office Online Server2016搭建与部署(在线编辑)

    至少需要两台服务器,一台域控制器,一台部署Office Online Server https://docs.microsoft.com/zh-cn/officeonlineserver/office ...

  2. 关于while read line使用read -p失效问题

    while stdin 原来默认是/dev/tty,被重定向到管道或文件后,如果你还想读屏幕(/dev/tty),那就单独执行某个命令时在显式的将stdin再指向 /dev/tty #!/bin/ba ...

  3. odoo 流水码 编码规则

    <?xml version="1.0" encoding="utf-8"?> <odoo> <data noupdate=&quo ...

  4. idea打开Run Dashboard

    在springcloud中,通常会开启多个微服务.单个一个个开就很麻烦 如果没有发现,可以在工程目录下找.idea文件夹下的workspace.xml,在其中增加如下组件 <component ...

  5. Linux基础系统优化(一)

    前言 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ifconfig 查询.设置网卡和ip等参数 ifu ...

  6. LOJ2484 CEOI2017 Palindromic Partitions DP、回文树

    传送门 当我打开Luogu题解发现这道题可以Hash+贪心的时候我的内心是崩溃的-- 但是看到这道题不都应该认为这是一道PAM的练手好题么-- 首先把原字符串重排为\(s_1s_ks_2s_{k-1} ...

  7. js加减乘除函数

    经常用到算数的时候,可以直接用:// 除法函数function accDiv(arg1, arg2) { var t1 = 0, t2 = 0, r1, r2; try { t1 = arg1.toS ...

  8. Eclipse 安装反编译插件 Eclipse Class Decompiler

    Eclipse Class Decompiler在线安装方法 https://blog.csdn.net/tangjinquan1157/article/details/77506015 Eclips ...

  9. 基于工作组消息队列高可用&msmq-wcf故障

    场景: msmq 1# server故障手工切换到2# server,msmq-wcf service宿主服务重启后,无法成功读取消息,状似service不工作.无法监听到数据传输. 解决过程: 反复 ...

  10. 8 search中的timeout参数

    默认的search,是没有时间限制的.比如,一个search,可能要10分钟才能搜完,那么,es就会等10分钟,直到结果出来.   然而,在某些场景下,客户是等不了10分钟的.比如,电商网站,客户宁可 ...