手把手教你在linux下熟悉使用awk的指令结构 (15)

大家好,今天和大家说一下awk吧。反正正则 早晚也要和大家说,不如一点一点和大家先交代清楚了,省得以后和大家说的时候,大家有懵的感觉。。。

其实正则里分为基础正则,和扩展正则。基础正则一般的命令就是grep和sed。而awk和egrep不止可以在基础正则内使用,还可以在扩展正则内使用。之前咱们见过sed了,其实grep和sed差不多,只是基本的语法有出入。而今天和大家说的awk,其实使用方法和egrep也差不多。

好吧。还是照例先开始今天的理论方面的东西吧。

awk 指令结构格式

1、确保整个awk命令用单引号括起来

2、确保命令内所有引号成对出现

3、确保用花括号括起动作语句,用圆括号括起条件语句

4、确保动作语句打印的字符串及转义字符用双引号引起来。

awk条件操作符

awk条件逻辑操作符

awk内置变量

awk中使用操作符,基本表达式可以划分为数字型,字符串型,变量型,域,数组元素

赋值操作符 = += *= /- %= ^=

条件表达操作符 ?

并、与、非 || && !

匹配操作符 ~ !~

关系操作符 < <= == != >>

算术操作符 + - * / % ^

前缀和后缀 ++ --------------------------------------------------------------------------------------------------------

awk的常用内置字符串函数

E.G

原例文:

[root@localhost ~]# cat wow
M.Tansley 05/99 48311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
P.Bunny 02/99 48 Yellow 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28

1)将整篇wow中的4全局替换成999

[root@localhost ~]# awk 'gsub(/4/,999)' wow
M.Tansley 05/99 9998311 Green 8 9990 999999
J.Lulu 06/99 9998317 green 9 2999 26
P.Bunny 02/99 9998 Yellow 12 35 28
J.Troll 07/99 99989992 Brown-3 12 26 26
L.Tansley 05/99 999712 Brown-2 12 30 28

或者

[root@localhost ~]# awk 'gsub(/4/,999,$0)' wow //默认就是$0,可以不加
M.Tansley 05/99 9998311 Green 8 9990 999999
J.Lulu 06/99 9998317 green 9 2999 26
P.Bunny 02/99 9998 Yellow 12 35 28
J.Troll 07/99 99989992 Brown-3 12 26 26
L.Tansley 05/99 999712 Brown-2 12 30 28

2)将用户名为M.Tansley所在行所有4替换成999

[root@localhost ~]# awk '{if($1=="M.Tansley") gsub(/4/,999); print $0}' wow
M.Tansley 05/99 9998311 Green 8 9990 999999
J.Lulu 06/99 48317 green 9 24 26
P.Bunny 02/99 48 Yellow 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28

3)将用户名为M.Tansley所在行第三列的所有4替换成999

[root@localhost ~]# awk '{if($1=="M.Tansley") gsub(/4/,999,$3); print $0}' wow
M.Tansley 05/99 9998311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
P.Bunny 02/99 48 Yellow 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28

4)将用户名为M.Tansley所在行第三列的所有4替换成999,并且仅显示替换行

[root@localhost ~]# awk '{if($1=="M.Tansley") {gsub(/4/,999,$3); print $0}}' wow
M.Tansley 05/99 9998311 Green 8 40 44

5)将用户名为M.Tansley所在行第一个出现的4替换成999,

[root@localhost ~]# awk '{if($1=="M.Tansley") sub(/4/,999); print $0}' wow
M.Tansley 05/99 9998311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
P.Bunny 02/99 48 Yellow 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28

5)将用户名为M.Tansley所在行第一个出现的4替换成999 , 并且仅显示替换行

[root@localhost ~]# awk '{if($1=="M.Tansley") {sub(/4/,999); print $0}}' wow
M.Tansley 05/99 9998311 Green 8 40 44

6)查询字符串Bunny中ny是第几个出现的字符。

[root@localhost ~]# awk 'BEGIN {print index("Bunny","ny")}' grade.txt
4

7)查询字符串J.Troll的字符长度是多少?

[root@localhost ~]# awk '$1=="J.Troll" {print length($1),$1}' grade.txt
7 J.Troll

8)分别测试字符串&ldquo;ANCD&rdquo;中是否包含字符 d 或 C 或 D,如果没包含返回字符0,如果包含返回时第几个出现

字符。

[root@localhost ~]# awk 'BEGIN {print match("ANCD",/d/)}'
0
[root@localhost ~]# awk 'BEGIN {print match("ANCD",/C/)}'
3
[root@localhost ~]# awk 'BEGIN {print match("ANCD",/D/)}'
4

9)显示字符串L.Tansley中从第1个字符(包含)开始的后面共5个字符

[root@localhost ~]# awk '$1=="L.Tansley" {print substr($1,1,5)}' grade.txt
L.Tan

显示字符串L.Tansley中从第2个字符(包含)开始的后面共3个字符

[root@localhost ~]# awk '$1=="L.Tansley" {print substr($1,2,3)}' grade.txt
.Ta

10)用printf格式化awk的输出

[root@localhost ~]# awk 'BEGIN{printf
"%-60s","-------------------------------------------------------------"}{printf"%-15s %s %-15s %s %s",$1,"|",$3,"|",$5}' grade.txt
M.Tansley | 48311 | 8
J.Lulu | 48317 | 9
P.Bunny | 48 | 12
J.Troll | 4842 | 12
L.Tansley | 4712 | 12[root@localhost ~]# awk 'BEGIN{printf "%-39s","----------------------------------------";printf
"%-15s %s %-15s %s %-1s %s","name","|","student_id","|","age","|";printf
"%-52s","----------------------------------------"}{printf
"%-15s %s %-15s %s %-3s %s",$1,"|",$3,"|",$5,"|"}END{printf
"%-39s","----------------------------------------"}' grade.txt
name | student_id | age |
----------------------------------------M.Tansley | 48311 | 8 |
J.Lulu | 48317 | 9 |
P.Bunny | 48 | 12 |
J.Troll | 4842 | 12 |
L.Tansley | 4712 | 12 |
----------------------------------------------------------------------------------------------------------------------------

今天的课程,就讲解到这里吧。

实在是不知道要写什么了,周末下午回北京,这车堵的。。。实在是累坏了。晚上又帮一个粉丝一个散件一个散件的攒机器。终于是又给他省了一笔钱啊。。。写完了才发现,昨天你们都没给我评论今天具体要写什么。。。我这还是突然想到之前只写了sed,今天打算把awk写完,才写的这个。。。

你们的基础如果都没问题的话,那我明天不写基础的东西了。。。实在是不知道大家需要什么东西啊,是不是都感觉随便搭建一个服务很有学习效果?那样学习的更有感觉???那为什么看vi/vim的和YUM的,也很多啊。。。苦恼中。。

转载于:https://www.cnblogs.com/paul8339/p/7686853.html

awk的常用内置函数的使用【转】相关推荐

  1. python常用内置函数总结-Python 常用内置函数

    Python 常用内置函数如下: 1. abs()函数返回数字的绝对值. print( abs(-45) )# 返回45print("abs(0.2):",abs(0.2))#返回 ...

  2. MySQL学习笔记_7_MySQL常用内置函数

    MySQL常用内置函数 说明: 1)可以用在SELECT/UPDATE/DELETE中,及where,orderby,having中 2)在函数里将字段名作为参数,变量的值就是字段所对应的每一行的值. ...

  3. 【学习笔记】16、常用内置函数(Built-in Functions)

    常用内置函数(Built-in Functions) 可以参照中文版文档:Python3 内置函数 | 菜鸟教程 常用的内置函数可以做如下分类: 1.数据类型相关 type() – 取数据类型 int ...

  4. 零基础学Python(第二十二章 常用内置函数)

    本套学习内容共计[22]个章节,每个章节都会有对应的从0-1的学习过程详细讲解,希望可以给更多的人提供帮助. 开发环境:[Win10] 开发工具:[Visual Studio 2019] 本章内容为: ...

  5. 04.Beetl常用内置函数以及安全输出---《Beetl视频课程》

    本期视频实现了三个功能,模糊搜索.标签分类.登录/注销功能: 内容简介:使用了常用内置函数,以及安全输出,实现了上面提到的三个业务 一起学beetl目录:https://my.oschina.net/ ...

  6. python中常见的内置函数_Python常用内置函数总结

    Python 常用内置函数总结 一.数学相关 1 .绝对值: abs(-1) 2 .最大最小值: max([1,2,3]) . min([1,2,3]) 3 .序列长度: len('abc') . l ...

  7. T-SQL备忘(6):常用内置函数

    T-SQL备忘(6):常用内置函数 日期和时间函数: 1.获取当前时间:GETDATE() select GETDATE() 返回: 2015-04-27 20:52:06.700 2.返回时间的部分 ...

  8. PYTHON语言之常用内置函数

    一 写在开头 本文列举了一些常用的python内置函数.完整详细的python内置函数列表请参见python文档的Built-in Functions章节. 二 python常用内置函数 请注意,有关 ...

  9. 微课|玩转Python轻松过二级(2.4节):常用内置函数用法精要2

    适用教材: 董付国.<玩转Python轻松过二级>.清华大学出版社,2018. 第2章  运算符.表达式与内置对象 2.4  Python常用内置函数用法精要 2.4.4  排序与逆序 2 ...

最新文章

  1. C# 视频监控系列(2):客户端——封装API
  2. SpringBoot 的其他使用 及 maven打包
  3. 开通域名绑定DDNS
  4. 从view 得到图片
  5. 自2018年以来我不知道的事情-Dan Abramov
  6. access 如何使用dolby_用Access开发《生产管理系统》
  7. Linux内核分析-week 1
  8. 我的Android进阶之旅------解决:debug-stripped.ap_' specified for property 'resourceFile' does not exist....
  9. mysql iostat_iostat命令详解_MySQL
  10. html代码格式化vscode,Vscode代码格式化
  11. educoder JAVA实训答案
  12. 利用555定时器的双电源电路原理
  13. latex段落悬挂缩进_使用正则表达式在Java中悬挂缩进段落
  14. 时空序列预测之PredRNN++(Casual LSTM和GHU解决时空预测学习中的深度困境)
  15. (阅读笔记)SecureNN: 3-Party Secure Computation for Neural Network Training
  16. 在线生成安卓APP图标
  17. 登录服务器虚拟控制台,服务器控制台登录类
  18. JDBC数据库连接和事务的管理 一个JDBC基本操作封装类的编写
  19. Gradient Boosted Decision Trees(GBDT)详解
  20. 【Doris Weekly FAQ】2021.07.05~2021.07.18

热门文章

  1. hsqldb快速入门
  2. ECCV 2020 | 小米提出 Fair DARTS :公平的可微分神经网络搜索
  3. Github 1300+ 星!旷视开源的深度强化学习绘画智能体论文解读
  4. 华为服务器型号2285,华为服务器2285磁盘阵列设置
  5. linux逻辑分区被删除了怎么办,找到了linux分区顺序错乱修复方法
  6. Python分析5000+抖音大V,发现大家都喜欢这类视频
  7. 剖析:3D游戏建模的千奇百变,带你快速入门
  8. 【TensorFlow】TensorFlow从浅入深系列之十 -- 教你认识卷积神经网络的基本网路结构及其与全连接神经网络的差异
  9. 最新 | 更小、更快、更强!EfficientNetV2:Smaller-Faster-Better
  10. 顺丰科技2021届春季招聘正式启动!