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- ...
随机推荐
- sorted内置函数
对List.Dict进行排序,Python提供了两个方法 --------------------------------sorted--------------------------------- ...
- java8新特性五-Stream
继上次学习过Java8中的非常重要的Lambda表达式之后,接下来就要学习另一个也比较重要的知识啦,也就如标题所示:Stream,而它的学习是完全依赖于之前学习的Lambda表达式. Java 8 A ...
- 总结IDEA和VS常用实用的快捷键
整理了我一般撸码时使用下面两个IDE最常用到的快捷键: IntelliJ IDEA: 快捷搜索:Ctrl+F (Match Case:区分大小写,Words:全字匹配,Regex:正则匹配) 批量替换 ...
- WordPress实现中英文数字之间自动加空格排版
通常来说中文与英文.中文和数字之间加上空格的排版会更加好看,但是如果让我们在编辑文章的时候人工添加,感觉非常繁琐和让人厌烦,所以今天龙笑天下就来跟大家介绍一下WordPress如何实现中英文数字之间自 ...
- python基础 — Selenium 详细介绍
一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 selenium 是一个 web 的自动化测试工具,不少学习功能自动化的同学开始首选 selenium ,因为它相比 ...
- golang - 映射 ini 配置文件
使用:setting.AppSetting.PageSize 包:go get github.com/go-ini/ini
- Linux进程的五个段
目录 数据段 代码段 BSS段 堆(heap) 栈 数据段 用来存放可执行文件中已初始化的全局变量,换句话说就是存放程序静态分配的变量和全局变量: 代码段 代码段是用来存放可执行文件的操作指令,也就是 ...
- mysql sql 分析
一.SQL 执行时间分析通过找到执行时间长的 SQL 语句,可以直观的发现数据层的效率问题. 1.通过 show processlist 来查看系统的执行情况mysql> show proces ...
- Python Django 协程报错,进程池、线程池与异步调用、回调机制
一.问题描述 在Django视图函数中,导入 gevent 模块 import gevent from gevent import monkey; monkey.patch_all() from ge ...
- karma mocha angular angular-mock 测试
describe('工具方法测试', function () { var utilsModule; beforeEach(function () { module('Admin'); // modul ...