awk命令笔记
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命令笔记的更多相关文章
- awk命令分析日志的简单笔记
awk是一个文本分析工具,可以用来进行流量日志分析 之前无意中看到了这个命令,简单记一下笔记 ,在打线下的时候可能会有用 awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gaw ...
- awk 学习笔记
awk的语法有两种形式 awk [options] 'script' var=value file(s) awk [options] -f scriptfile var=value file(s) 选 ...
- awk命令
awk 手册 原文 Table of Contents 1. awk简介 2. awk命令格式和选项 2.1. awk的语法有两种形式 2.2. 命令选项 3. 模式和操作 3.1. 模式 3.2 ...
- (转)awk命令
转自:http://man.lupaworld.com/content/manage/ringkee/awk.htm#id2874788 整理:Jims of 肥肥世家 <jims.yang@g ...
- shell编程之awk命令详解
shell编程之awk命令详解 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; out ...
- linux awk学习笔记
awk学习笔记 awk语法格式 awk '{pattern + action}' {filenames} awk作用 awk的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后 ...
- AWK命令使用
前言 文本处理三剑客中,grep强在文本查找,sed强在文本处理,现awk强在文本查找后的输出处理.awk可以在处理文本的过程中使用编程结构(变量.条件判断.循环)以及其内置的变量,这就是它强大的地方 ...
- 【转】awk学习笔记
Awk学习笔记 整理:Jims of 肥肥世家 <jims.yang@gmail.com> Copyright © 2004 本文遵从GPL协议,欢迎转载.修改.散布. 第一次发布时间:2 ...
- 使用 awk 命令统计文本
2022-04-19 11:25:15.008,b4d13bfca8fe4b93a85e65a88520d945,LogScheduler#printLog,10ms,Y,xxxxxxxx 2022- ...
随机推荐
- laravel 配置自动加载多路由文件
在 app\Providers\RouteServiceProvider文件下增加方法&注册: 增加之后就可以在routers下建立api文件夹,在里面添加路由了
- KAFA架构及其基本概念
1.目标 - KAFA价格 在我们上一篇Kafka教程中,我们讨论了Kafka用例和应用程序.今天,在这个Kafka教程中,我们将讨论Kafka Architecture.在这篇Kafka Archi ...
- 简单的python爬虫教程:批量爬取图片
python编程语言,可以说是新型语言,也是这两年来发展比较快的一种语言,而且不管是少儿还是成年人都可以学习这个新型编程语言,今天南京小码王python培训机构变为大家分享了一个python爬虫教程. ...
- JVM运行参数优化详细教程
获取设置的参数str的值: 常用的-X参数有以下这些: 手动调用GC执行垃圾回收操作:(-XX:+DisableExplicitGC 手动调用将会失效) 查看tomcat的进程ID: 或者:
- js指定日期时间加一天 ,判断指定时间是否为周末
function dateAdd(startDate) { startDate = new Date(startDate); startDate = +startDate + ***; startDa ...
- 图解javascript的this指向
图解javascript的this指向 作者: HerryLo 本文永久有效链接: https://github.com/AttemptWeb...... 以下就只有两张图,请放心食用!! #简版th ...
- NIO开发Http服务器(1):项目下载、打包和部署
最近学习了Java NIO技术,觉得不能再去写一些Hello World的学习demo了,而且也不想再像学习IO时那样编写一个控制台(或者带界面)聊天室.我们是做WEB开发的,整天围着tomcat.n ...
- gcc 编译控制选项
gcc 编译控制选项前面已经讲过, gcc 的基本用法是:$ gcc [选项] [文件名]gcc 有很多编译控制选项,使得 gcc 可以根据不同的参数进行不同的编译处理,可供 gcc调用的参数大约有 ...
- 规格化设计——OO第三单元总结
规格化设计--OO第三单元总结 一.JML语言理论基础.应用工具链 1.1 JML语言 JML(java modeling language)是一种描述代码行为的语言,包括前置条件.副作用等等.J ...
- 微信小程序 image组件坑
远程图片 在真机上测试时 image组件只能显示http请求的图片, 对https 与 //xxx.xxx.xx 之类的不能显示. 可显示 'http://img.alicdn.com/i2/8323 ...