awk学习笔记

awk学习笔记

awk的用途

awk 在复杂的文本数据中,能够帮助用户筛选出需要的信息。

awk常见用法

  • awk 'pattern' file
  • awk '{action} file'
  • awk 'pattern {action} file'

pattern即模式的意思,awk能够与强大的正则表达式结合,从复杂多变的数据中筛选出需要的信息。

{action}内部的是awk脚本命令

常用的正则表达式符号

元字符说明
^在串首匹配
$在串尾部匹配
.匹配单个任意字符
*匹配0个或者多个前导字符
+匹配1个或者多个前导字符
?匹配0个或者一个前导字符
[ABC]匹配A、B、C其中一个字符
[^ABC]不匹配A、B、C其中一个字符
[A-Z]匹配A-Z之间任意字符
A|B匹配A或者B
(A|B)匹配A或者B

典型的用例

简单的awk分割筛选数据的例子太多,这里我就不举例了。本文举一个配合正则表达式。从每一行中获取特定的内容,筛选出数据。

涉及的概念

  • 常用的正则表达式符号
  • 正则匹配捕获分组
  • 管道 |
  • sort uniq等命令

任务背景

线上日志中会有一些异常的id输出,作为日志。我们需要把这些id从日志每一行中提取出来,反馈给数据侧。
需要提取的日志的格式大致如此

任意内容xxx userid:[03dc9c2d53fc6cxxxxx22b021c6200102142xxxxxx],fields:[*] xxxxxx

我们只需要提取出其中的id即可

解决方案

使用如下命令

awk '{match($0,/userid:\[([[:alnum:]]+)\],/,a);print a[1]}' logfile |sort|uniq >3.log

参考文献

awk中正则表达式的使用

awk之match函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值