awk的用法

一、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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • awk命令的基本使用 [root@shellscript ~]# head -n 3 /etc/passwd | ...
    古寒飞阅读 1,062评论 0 2
  • awk介绍awk变量printf命令:实现格式化输出操作符awk patternawk actionawk数组aw...
    哈喽别样阅读 1,560评论 0 4
  • awk:报告生成器,格式化文本输出 内容: awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 a...
    BossHuang阅读 1,453评论 0 9
  • 本章主要学习内容awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 awk条件判断 a...
    楠人帮阅读 1,264评论 0 8
  • 报告生成器,格式化文本输出,常用选项: -F:指明输入时用到的字段分隔符 -v var=value:自定义变量 介...
    毛利卷卷发阅读 517评论 0 1