awk用法二

  3、awk的printf命令

    格式:printf format, item1 item2…

    要点:

     (1) 要指定format;

     (2) 输出时不会自动换行,如需换行则需要给出\n;

     (3) format用于为后面的每个item指定其输出格式;

     (4) format格式的指示符都是%开头,后跟一个字符。

    format常用的字符:

     %c:显示字符的ASCII码

     %d,%i:十进制整数;

     %e,%E:科学计数法;

     %f:显示浮点数;

     %g,%G:以科学计数法格式或浮点数格式显示数值;

     %s:显示字符串;

     %u:显示无符号整数;

     %%:显示%自身。

    format中常用修饰符:

    #:显示宽度;

    -:左对齐;

    +:显示数值的符号;

     .#:取值精度。

    实例1:以固定宽度20输出/etc/passwd文件中前10条记录的用户名和shell信息:

1.jpg

    上例中标注的部分含义为:两个字段都是以20个字符的宽度来显示,并且以换行符为每行的结束符。

   实例2:将上例中的用户名以左对齐显示:

2.jpg

   实例3:将3.14159取2位小数显示:

3.jpg

  4、awk的操作符

    算术操作符:

      x+y:加

      x-y:减 

      x*y:乘

      x/y:除

      x**(^)y:乘方

      x%y:取模

      -x:负值

      +x:转换为数值

    字符串操作符:

      连接:无需符号,直接将两个字符串放在一起就可以了;

    赋值操作符:

      x=y:将y的值赋值给x;

      x+=y:将x+y的结果赋值给x;

      x-=y:将x-y的结果赋值给x;

      x/=y:将x除以y的结果赋值给x;

      x%=y:将x与y取模的结果赋值给x;

      x^=y或x**=y:将x取y次方的结果赋值给x;

      x++:将x+1的结果赋值给x;

      x–:将x+1的结果赋值给x;

    注:如果模式自身是=号,要写为/=/

    比较操作符:

      x<y:如果x小于y则为真;

      x<=y:如果x小于等于y则为真;

      x>y:如果x大于y则为真;

      x>=y:如果x大于等于y则为真;

      x==y:如果x等于y则为真;

      x~y:模式匹配,x能够被y模式所匹配为真。

    逻辑操作符:

      x&&y:如果x为真则执行y;

      x||y:如果x为假则执行y。

    条件表达式:

      selector ?if-ture-expression: if-false-expression

        selector:条件

        ?if-ture-expression:如果为真则执行此表达式

        :if-false-expression:否则执行此表达式

    实例4:判断/etc/passwd文件中uid大于500则显示为"Common user",否则显示为“admin user":

4.jpg

  5、模式

    (1)正则表达式

      格式:/PATTERN/

      实例5:只显示/etc/passwd文件中存在root的行:

5.jpg

    (2)表达式

      以比较表达式居多,其结果为非0或非空字符串时满足条件,awk仅处理满足条件的行。

      实例6:只显示uid大于等于500的行:

6.jpg

    (3)特殊模式

      BEGIN:在awk命令的program运行之前执行一次;

     END:在awk命令的program运行之后执行一次。

     实例6:显示/etc/passwd文件中以root开头的行的用户名在人、UID、shell信息,显示时以逗号分隔各字段,并在输出结果后打印“THE END”。

7.jpg

    (5)空模式

      用于匹配任意行。

8.jpg

原创文章,作者:petmaster,如若转载,请注明出处:http://www.178linux.com/10460

(0)
petmasterpetmaster
上一篇 2015-12-24
下一篇 2015-12-28

相关推荐

  • 文本查找相关命令简单介绍

    文件查找命 在文件系统上查找符合条件的文件 非实时查找:基于索引查找 locate 实时查找:find locate介绍 依赖于事先构建的索引:索引的构建是在系统较为空闲时自动进行(周期性任务):手动更新数据库(updatedb) 索引构建过程需要遍历整个根文件系统,极消耗资源,生产中尽量避免手动更新。 语法: locate KEYWORD -i:忽略大小写…

    Linux干货 2017-04-10
  • nginx

    nginx: master/worker master:配置文件分析和加载、管理worker、平滑升级; worker:处理用户请求; cache loader, cache manager:缓存加载和缓存管理 user Syntax: user user [group];        …

    Linux干货 2017-06-19
  • linux启动和内核管理

    linux启动和内核管理:1. 加载BIOS 的硬件信息,获取第一个启动设备2. 读取第一个启动设备MBR 的引导加载程序(grub) 的启动信息3. 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备4. 核心执行init 程序,并获取默认的运行信息5.init 程序执行/etc/rc.d/rc.sysinit 文件6. 启动核心的外挂模…

    Linux干货 2017-03-28
  • 网卡路由配置信息及偷懒用法

            对于初学Linux的人来说,配置网卡无疑是比较晕的,各种的配置文件,字段、命令等让人眼花撩乱。所以这一章主要给大多数还在网卡配置路由配置的同学们解惑一、网卡配置基本概念        …

    Linux干货 2017-05-08
  • N25-第一周博客作业

    1、描述计算机的组成及其功能:    没有听马哥视频之前,计算机的组成理解为主机+显示器;    听完视频之后,对计算机的组成分为硬件系统和软件系统。    硬件系统主要有:运算器、控制器、存储器、输入设备和输出设备;    软件系统主要有…

    Linux干货 2016-12-04
  • 马哥教育N22期第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 root@xuc-virtual-machine:/home/xuc# cp -r /etc/skel/ /home/tuser1 root@xuc-virtual-machine:/…

    Linux干货 2016-09-06