美文网首页
awk的用法

awk的用法

作者: sunnowyli | 来源:发表于2019-02-27 17:17 被阅读0次

一、awk命令用法

        在Linux中,awk 即 gawk , awk的二进制文件为gawk的链接文件;

         gawk - pattern scanning and processing language / 模式扫描及处理语言;

        用法: gawk [options]  'pattern{ACTION }'  FILE...

        1、options:     -F: 定义输入字段分隔符,默认字符为空格;

                           -v var=val  : 自定义变量;

       2、常见的输出分隔符:

                            a.print  :

                             格式:    print item1,item2.....       

                             注意: item之间用 逗号分割;item可以是字符串、数值;当前处理行的字段、变量或awk的表达式;

                            b.printf : 按照给定格式输出;

                            格式:printf  FORMAT , item1,item2 

                            注意:FORMAT必须项;如果换行需要手动给出\n;每一个输出的item都需要对应FORMAT中的格式化符号;

                              格式符有:

                                                %d,%i : 显示十进制的整数;

                                                %s : 显示字符串;

                                                %f : 显示浮点数

                                                %c : 显示字符串的ASCII码;

                                                %e,%E : 科学计算法显示;

                                                 %u: 无符号整数;

                                                 %% : 显示%本身;

                            c. 修饰符,对输出进行修饰

                             #,[#] : 分别控制输出item的宽度和精度(小数);

                             -  : 控制输出item 左对齐;

                             +  :控制输出item(数值) 的符号;

       3、awk变量:

                            a. 内置变量

                                    FS :输入字段分隔符

                                    OFS: 输出字段分隔符

                                    NF : number of  fields /行字段数 ;   $NF:最后一个字段的值;

                                    NR : number of record/ 行数

                                    FNR : file of number record /显示每个文件的行数

                                    FILENAME : 显示当前正在处理的文件的名字

                            b.自定义变量

                                   -v  var_name=VALUE

                eg1: ~]# awk -F: '/root\>/{print $1}' /etc/passwd

                                root

                                operator

                                oseroot

               eg2: ~]# awk -v FS=":" '/root/{print $1}' /etc/passwd

                                root

                                operator

                                oseroot

                eg3: 控制输出item的方式               

                eg4:  打印/etc/passwd 的 字段数及最后一个字段的值        

                    ~]# awk -F: '/root/{print NF,$NF}' /etc/passwd

                            7 /bin/bash

                            7 /sbin/nologin

                            7 /bin/bash

4、pattern:AWK patterns may be one of the following:

              空模式 : 匹配每一行

             /regular expression/ : 处理能够匹配到的行

              relational expression :关系表达式,为真时才会被处理;

              pattern && pattern

              pattern || pattern

              pattern ? pattern : pattern

              (pattern)

              ! pattern

              /pattern1/, /pattern2/

     eg1:  ~]# awk '/^root\>/{print}' /etc/passwd

                root:x:0:0:root:/root:/bin/bash

    eg2:  ~]# awk -F: '$3==0{print}' /etc/passwd

                root:x:0:0:root:/root:/bin/bash

    eg3:  ~]# awk -F: '$1~"^root"{print}' /etc/passwd

                root:x:0:0:root:/root:/bin/bash

    eg4:   ~]# awk -F: '/^root\>/,/^bin\>/{print}' /etc/passwd

                root:x:0:0:root:/root:/bin/bash

                bin:x:1:1:bin:/bin:/sbin/nologin

    eg5:  ~]# awk -F: '(NR>=1&&NR<=2){print}' /etc/passwd

                root:x:0:0:root:/root:/bin/bash

                bin:x:1:1:bin:/bin:/sbin/nologin

    eg6:  ~]# awk -F: '!(NR>=2){print}' /etc/passwd

                root:x:0:0:root:/root:/bin/bash

二、awk函数用法

           awk 函数包括内置函数和自定义函数,内置函数比较常用;

           a.  rand() : Return a random number N, between 0 and 1, such that 0 ≤ N < 1

             ~]# awk 'BEGIN{print rand()}'

                0.237788

          b.length(string) : 显示字符串的长度

             ~]# awk -v tmp="helloworld" 'BEGIN{print length(tmp)}'

                10

            ~]# awk -F:  '/^root\>/{print length($1)}'  /etc/passwd

                4

        c.  split(s, a [, r ] ])  : 以r为分隔符分割s, 并将分割后的结果保存在数组a 中 ;

            ##统计外部IP连接的个数

            ~]# netstat -tan | awk '/tcp\>/{split($5,ip,":");count[ip[1]]++}END{for (i in count){print i,count[i]}}'

            0.0.0.0 7

           10.14.5.107 1

相关文章

  • awk用法详解

    awk 用法 awk ' pattern {action} ' 1、awk '/101/' file ...

  • 1-awk教程

    一、基本用法 awk的基本用法就是下面的形式。# 格式$ awk 脚本片段 文件名# 示例$ awk '{prin...

  • awk的使用方法

    awk 用法: 常用格式: awk [options 参数] 'commands' ...

  • 18-文本处理三剑客之awk

    本章内容 ◆ awk介绍◆ awk基本用法◆ awk变量◆ awk格式化◆ awk操作符◆ awk条件判断◆ aw...

  • shell对输出流的处理

    shell对输出流的处理awk介绍awk基本用法awk高级用法awk小技巧在日常计算机管理中,总会有很多数据输出到...

  • 2017 09-04 AWK

    本章主要学习内容awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 awk条件判断 a...

  • awk命令使用

    用法一: awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' ...

  • awk

    awk:报告生成器,格式化文本输出 内容: awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 a...

  • 22. 三剑客之awk

    1. AWK基础 1.1 AWK工作原理和基本用法说明 AWK:Aho, Weinberger, Kernigha...

  • awk命令的使用

    awk命令的使用 awk命令格式awk '条件1{动作1} 条件2{动作2}…' 文件名 在介绍awk命令的用法前...

网友评论

      本文标题:awk的用法

      本文链接:https://www.haomeiwen.com/subject/mdcfuqtx.html