码迷,mamicode.com
首页 > 系统相关 > 详细

shell脚本-awk

时间:2019-08-23 22:13:50      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:保存   bsp   img   pass   ima   指定   默认   文件   包含   

一、awk工作原理

 

二、awk的用法

 awk [option] ... ‘program‘ FILE ...
    1、program语句必须使用单引号!
    2、多条program语句使用用大括号包含起来,可以并列,可以嵌套
三、awk的常用参数

 -F   #指定分隔符

 示例:awk -F: ‘{print $1}‘ /etc/passwd     #输出/etc/passwd/文件中以:为分隔符的第一列

    技术图片

   -v    #因为awk是一种语言编译器,能自己定义变量,同时也有自己的内置变量(与shell中的环  变量类似),所以要手动指定变量参数。

 示例:awk -v a="a+b" ‘{print a}‘ test.txt     #给a复制,打印a这个变量(在awk中调用变量不需要 加$符)

   技术图片

 技术图片

四、awk的语法格式

 1.print     #默认输出

  在awk中没有保存的命令,我们可以关联别的命令来保存awk的结果

  示例:awk ‘{a="a+b";print a}‘ test.txt | tee a.txt

  技术图片

 2.printf   #实现格式化输出

  示例:printf "%s是%d班学习最棒的",变量1,变量2

  (1)格式符

       %s   字符串
            %d  %i  数值
            %e  %E  科学计算数值
            %c  ACSii码值
            %f   浮点数
            %u  无符号整数
            %%  逃逸符 只显示 % 自己

    (2)修饰符

    默认为右对齐

    -  代表左对齐

    %5.4f    #5代表所占的位数,4代表所取的小数位

  3.变量

  变量分为内置变量和自定义变量

  内置变量是awk语言所默认支持的变量

  变量:

    FS      #定义输入分割符的变量

    OFS    #定义输出分隔符的变量

    NF       #定义行分隔以后的参数个数($NF 分隔以后最后的一列变量)

  示例:awk -v FS=":" ‘/\/bash$/{print $1,$NF}‘ /etc/passwd    

 技术图片

            NR  定义文件的行数,定义多个文件的文件的,行号叠加
            FNR  文件只计算自己的行号

  示例:awk ‘{print NR}‘ /etc/fstab /etc/passwd

 技术图片
            awk ‘{print FNR}‘ /etc/fstab /etc/passwd 

  技术图片

      FILENAME 存储文件的名字

   示例:awk ‘{print FILENAME}‘ /etc/passwd    #把文件名打印N次,N文件的行数

  技术图片

  BEGIN{语句} 只在行循环开始时,执行一次;

  示例:awk ‘BEGIN{print FILENAME}‘ /etc/passwd

  

shell脚本-awk

标签:保存   bsp   img   pass   ima   指定   默认   文件   包含   

原文地址:https://www.cnblogs.com/hmm01031007/p/11402609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!