mysql awk_awk从入门到精通(二十九):awk的经典实战案例

本文介绍了多个awk的经典实战案例,包括插入字段、格式化空白、筛选IPv4地址、读取配置文件、去重、统计TCP连接状态、处理字段缺失和包含分隔符的数据、行列转换等,展示了awk在处理文本数据方面的强大能力。
摘要由CSDN通过智能技术生成

前言

这些案例是我收集起来的,大多都是我自己遇到过的,有些比较经典,有些比较具有代表性。这些awk案例我也录了相关视频的讲解awk经典实战案例精讲。

awk插入几个新字段

在”a b c d”的b后面插入3个字段e f g。echo a b c d|awk '{$3="e f g "$3}1'

awk格式化空白

移除每行的前缀、后缀空白,并将各部分左对齐。aaaa        bbb     ccc

bbb     aaa ccc

ddd       fff             eee gg hh ii jjawk 'BEGIN{OFS="\t"}{$1=$1;print}' a.txt

执行结果:aaaa    bbb     ccc

bbb     aaa     ccc

ddd     fff     eee     gg      hh      ii      jj

awk筛选IPv4地址

从ifconfig命令的结果中筛选出除了lo网卡外的所有IPv4地址。## 1.方法一:

ifconfig | awk '/inet / && !($2 ~ /^127/){print $2}'

# 按段落读取

## 2.方法二:

ifconfig | awk 'BEGIN{RS=""}!/lo/{print $6}'

## 3.方法三:

ifconfig |\

awk '

BEGIN{RS="";FS="\n"}

!/lo/{$0=$2;FS=" ";$0=$0;print $2}

'

awk读取.ini配置文件中的某段[base]

name=os_repo

baseurl=https://xxx/centos/$releasever/os/$basearch

gpgcheck=0

enable=1

[mysql]

name=mysql_repo

baseurl=https://xxx/mysql-repo/yum/mysql-5.7-community/el/$releasever/$basearch

gpgcheck=0

enable=1

[epel]

name=epel_repo

baseurl=https://xxx/epel/$releasever/$basearch

gpgcheck=0

enable=1

[percona]

name=percona_repo

baseurl = https://xxx/percona/release/$releasever/RPMS/$basearch

enabled = 1

gpgcheck = 0awk '

BEGIN{RS=""} # 按段落

/\[mysql\]/{

print;

while((getline)>0){

if(/\[.*\]/){

exit

}

print

}

}

'   a.txt

awk根据某字段去重

去掉uid=xxx重复的行。2019-01-13_12:00_index?uid=123

2019-01-13_13:00_index?uid=123

2019-01-13_14:00_index?uid=333

2019-01-13_15:00_index?uid=9710

2019-01-14_12:00_index?uid=123

2019-01-14_13:00_index?uid=123

2019-01-15_14:00_index?uid=333

2019-01-16_15:00_index?uid=9710awk -F"?" '!arr[$2]++{print}' a.txt

结果:2019-01-13_12:00_index?uid=123

2019-01-13_14:00_index?uid=333

2019-01-13_15:00_index?uid=9710

awk次数统计portmapper

portmapper

portmapper

portmapper

portmapper

portmapper

status

1. 前言 这是一本awk学习指引, 其重点着重于 :  awk 适于解决哪些问题 ?  awk 常见的解题模式为何 ? 为使读者快速掌握awk解题的模式及特性, 本手册系由一些较具代表性的范例及其题解所构成; 各范例由浅入深, 彼此间相互连贯,范例中并对所使用的awk语法及指令辅以必要的说明. 有关 awk的指令, 函数,...等条列式的说明则收录于附录中, 以利读者往后撰写程序时查阅. 如此编排, 可让读者在短时间内顺畅地学会使用awk来解决问题. 建议读者循着范例上机实习, 以加深学 习效果. 读者宜先具备下列背景 : [a.] UNIX 环境下的简单操作及基本概念. 例如 : 文件编辑, 文件复制 及 管道, 输入/输出重定向 等概念 [b.] C 语言的基本语法及流程控制指令. (awk 指令并不多, 且其中之大部分与 C语言中之用法一致, 本手册中对该类指令之语法及特性 不再加以繁冗的说明, 读者若欲深究,可自行翻阅相关的 C 语言书籍) 2. awk概述 为什么使用awk awk 是一种程序语言. 它具有一般程序语言常见的功能. 因awk语言具有某些特点, 如 : 使用直译器(Interpreter)不需先行编译; 变量无类型之分 (Typeless), 可使用文字当数组的下标(Associative Array)...等特色. 因此, 使用awk撰写程序比起 使用其它语言更简洁便利且节省时间. awk还具有一些内建功能, 使得awk擅于处理具数据行 (Record), 字段(Field)型态的资料; 此外, awk内建有pipe的功能, 可将处理中的数据传送给外部 的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很 容易使用系统资源. 由于awk具有上述特色, 在问题处理的过程中, 可轻易使用awk来撰写一些小工具; 这些小工具 并非用来解决整个大问题,它们只扮演解决个别问题过程的某些角色, 可藉由Shell所提供的pipe 将数据按需要传送给不同的小工具进行处理, 以解决整个大问题. 这种解题方式, 使得这些小工 具可因不同需求而被重复组合及重用(reuse); 也可藉此方式来先行测试大程序原型的可行性与 正确性, 将来若需要较高的执行速度时再用C语言来改写.这是awk最常被应用之处. 若能常常 如此处理问题, 读者可以以更高的角度来思考抽象的问题, 而不会被拘泥于细节的部份. 本手册为awk入门的学习指引, 其内容将先强调如何撰写awk程序,未列入进一步解题方式的应 用实例, 这部分将留待UNIX进阶手册中再行讨论.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值