手把手教你在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 / Green
J.Lulu / green
P.Bunny / Yellow
J.Troll / Brown-
L.Tansley / Brown-

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

[root@localhost ~]# awk 'gsub(/4/,999)' wow
M.Tansley / Green
J.Lulu / green
P.Bunny / Yellow
J.Troll / Brown-
L.Tansley / Brown-

或者

[root@localhost ~]# awk 'gsub(/4/,999,$0)' wow //默认就是$0,可以不加
M.Tansley / Green
J.Lulu / green
P.Bunny / Yellow
J.Troll / Brown-
L.Tansley / Brown-

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

[root@localhost ~]# awk '{if($1=="M.Tansley") gsub(/4/,999); print $0}' wow
M.Tansley / Green
J.Lulu / green
P.Bunny / Yellow
J.Troll / Brown-
L.Tansley / Brown-

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

[root@localhost ~]# awk '{if($1=="M.Tansley") gsub(/4/,999,$3); print $0}' wow
M.Tansley / Green
J.Lulu / green
P.Bunny / Yellow
J.Troll / Brown-
L.Tansley / Brown-

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

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

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

[root@localhost ~]# awk '{if($1=="M.Tansley") sub(/4/,999); print $0}' wow
M.Tansley / Green
J.Lulu / green
P.Bunny / Yellow
J.Troll / Brown-
L.Tansley / Brown-

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

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

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

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

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

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

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

字符。

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

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

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

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",$,"|",$,"|",$}' grade.txt
M.Tansley | |
J.Lulu | |
P.Bunny | |
J.Troll | |
L.Tansley | | [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",$,"|",$,"|",$,"|"}END{printf
"%-39s","----------------------------------------"}' grade.txt
name | student_id | age |
---------------------------------------- M.Tansley | | |
J.Lulu | | |
P.Bunny | | |
J.Troll | | |
L.Tansley | | |
----------------------------------------------------------------------------------------------------------------------------

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

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

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

awk的常用内置函数的使用【转】的更多相关文章

  1. MYSQL常用内置函数详解说明

    函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...

  2. Python常用模块中常用内置函数的具体介绍

    Python作为计算机语言中常用的语言,它具有十分强大的功能,但是你知道Python常用模块I的内置模块中常用内置函数都包括哪些具体的函数吗?以下的文章就是对Python常用模块I的内置模块的常用内置 ...

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

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

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

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

  5. SqlServer常用内置函数

    --======================================= -- SQL常用内置函数 --======================================= --判 ...

  6. Python的常用内置函数介绍

    Python的常用内置函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.取绝对值(abs) #!/usr/bin/env python #_*_coding:utf-8_ ...

  7. python中的运算符及表达式及常用内置函数

    知识内容: 1.运算符与表达式 2.for\while初步了解 3.常用内置函数 一.运算符与表达式 python与其他语言一样支持大多数算数运算符.关系运算符.逻辑运算符以及位运算符,并且有和大多数 ...

  8. python第十八课——常用内置函数

    常用内置函数:round(): print(round(3.14),round(3.99)) print(round(3145.926,-2),round(413.575,2)) abs(): pri ...

  9. php2go - Go 实现 PHP 常用内置函数

    [转]http://www.syyong.com/Go/php2go-Use-Golang-to-implement-PHP-s-common-built-in-functions.html 使用Go ...

随机推荐

  1. Gauss Prime UVA - 1415

    题意:给出a和b判定是否为高斯素数 解析: 普通的高斯整数i = sqrt(-1) 高斯整数是素数当且仅当: a.b中有一个是零,另一个是形为或其相反数的素数: 或a.b均不为零,而为素数. 这题 提 ...

  2. 【BZOJ2731】三角形覆盖问题

    想象一条平行于\(y\)轴的扫描线,从低往高扫描.如何确定关键高度才能使每两个关键高度之间分割出的图形易于计算呢? 关键高度有:三角形底边高度.三角形上顶点高度.三角形交点的高度. ​ 如此分割,我们 ...

  3. 解题:POI 2009 Fire Extinguishers

    题面 洛谷数据非常水,建议去bzoj 我第一眼一看这不是那个POI2011的升级版吗(明明这个是2009年的,应该说那个是这个的弱化版,果然思想差不多. 因为$k$很小,可以考虑每个间隔距离来转移.我 ...

  4. Jenkins(一)---我理解的jenkins是这样的

    1.齿轮 如果将 java / maven / ant / git / tomcat / jenkins 等等软件比喻为齿轮:如下图 两个软件在一起可以驱动另外一个软件:如下图 如果把这些软件要集成在 ...

  5. D. Petya and Array 树状数组

    题意: 给出一个数组,元素有正有负有0,问其区间和小于 t 的子区间的个数. sum[ r ]-sum[ l-1 ]<t,其中sum是a的前缀和. 实现的方法就是从前往后对于每一个sum[ i ...

  6. ACF/PACF,残差白噪声的检验问题

    关于自相关.偏自相关: 一.自协方差和自相关系数       p阶自回归AR(p)       自协方差 r(t,s)=E[X(t)-EX(t)][X(s)-EX(s)]       自相关系数ACF ...

  7. QCon技术干货:个推基于Docker和Kubernetes的微服务实践

    2016年伊始,Docker无比兴盛,如今Kubernetes万人瞩目.在这个无比需要创新与速度的时代,由容器.微服务.DevOps构成的云原生席卷整个IT界.在近期举办的QCon全球软件开发大会上, ...

  8. Python【网络编程】内置模块urllib

    from urllib import request,parseurl = 'http://www.nnzhp.cn'req = request.urlopen(url) #打开一个url,发get请 ...

  9. Git3:Git分支

    目录 一.概念 二.创建与合并分支 1.创建分支原理分析 2.创建分支语法 三.解决冲突 四.分支管理策略 1.保留分支历史 2.分支管理原则 五. bug分支 六.推送和拉取远程分支 一.概念 分支 ...

  10. Django中@login_required用法简介

    我们在网站开发过程中,经常会遇到这样的需求: 用户登陆系统才可以访问某些页面 如果用户没有登陆而直接访问就会跳转到登陆界面,而不能访问其他页面. 用户在跳转的登陆界面中完成登陆后,自动访问跳转到之前访 ...