• awk


    一看到awk,我就想到了一些恐怖奇怪的东西:awesome,awkard。。。

    一直觉得难用, 记不住他的用法

    http://www.cnblogs.com/jxnulxl/articles/566974.html

    语法:

    awk '{pattern + action}' {filenames}

    其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号 ({}) 不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组

    awk的语法:

    与其它UNIX命令一样,awk拥有自己的语法:

    awk [ -F re] [parameter...] ['prog'] [-f progfile][in_file...]

    参数说明:

    -F re:允许awk更改其字段分隔符。    F参数默认为空格

    parameter: 该参数帮助为不同的变量赋值。

    'prog': awk的程序语句段。这个语句段必须用单拓号:'和'括起,以防被shell解释。这个程序语句段的标准形式为:

    'pattern {action}'    pattern有些类似sed,以//包围的正则表达式re

          其中pattern参数可以是egrep正则表达式中的任何一个,它可以使用语法/re/再加上一些样式匹配技巧构成。与sed类似,你也可以使用","分开两样式以选择某个范围。关于匹配的细节,你可以参考附录,如果仍不懂的话,找本UNIX书学学grep和sed(本人是在学习ed时掌握匹配技术的)。 action参数总是被大括号包围,它由一系统awk语句组成,各语句之间用";"分隔。awk解释它们,并在pattern给定的样式匹配的记录上执行其操作。与shell类似,你也可以使用“#”作为注释符,它使“#”到行尾的内容成为注释,在解释执行时,它们将被忽略。你可以省略pattern和 action之一,但不能两者同时省略,当省略pattern时没有样式匹配,表示对所有行(记录)均执行操作,省略action时执行缺省的操作——在标准输出上显示。

          -f progfile:允许awk调用并执行progfile指定有程序文件。progfile是一个文本文件,他必须符合awk的语法。

          in_file:awk的输入文件,awk允许对多个输入文件进行处理。值得注意的是awk不修改输入文件。如果未指定输入文件,awk将接受标准输入,并将结果显示在标准输出上。awk支持输入输出重定向。

     

     awk '/^int/{print $2}' c/*.c    一行行的读取c文件,然后找到以int开头的行(^表示开头,不少非),以空格分隔之,打印数组第二个值, print则是打印整行

    其实这个的基本用法  还是很简单的:

    who am i| awk -F'(' '{print $2}' | awk -F')' '{print $1}'  

    10.74.169.50

    id | awk -F'(' '{print $2}' | awk -F')' '{print $1}'  获取当前登录用户的用户名

    id | awk -F'('   '{print $2}'   ———— 这里有两组引号, 不要看到这个就眼花眼晕! 有时候更多, 

    ———— 对于F参数,使用单引号或者双引号都可以!! 可以混用,  但是不可以不匹配! 双引号则会解析其中内容。。。   它不是必须的;单对于特殊字符则是不行的,不加引号是不行的! !

    echo `who am i` | awk -F'(' '{print $2}' | awk -F ) '{print $1}'  // 特殊字符 ) ,不加引号是不行的 
    -bash: syntax error near unexpected token `)'
    
    echo `who am i` | awk -F'(' '{print $2}' | awk -F % '{print $1}'
    
    10.74.169.50)
    
    echo `who am i` | awk -F'(' '{print $2}' | awk -F 2 '{print $1}'
    
    10.74.169.50)
    

      

    ———— 对于第二个参数,即函数print的内容,只能使用单引号!!

    echo `who am i` | awk -F'(' '{print $2}' | awk -F')' "{print $1}"
    10.74.169.50)

    第一个分号是说分隔符,第二个是对awk分割的结果进行操作: 此处是打印分隔出来的第二个列:$2

    f 参数: 指定文件, 用于执行某些命令, 而不是输入文件,—— 我奇怪这个f 到底什么时候有用

    ---------

    又复习了一把

    学习了BEGIN END的用法

    语法:

    awk BEGIN{action} {action} END{action}

    awk 后面的三个部分都是可以省去的。 

    内置变量:  NR number 、、、

    内置函数: printf、 split 、、、、

  • 相关阅读:
    python基础 条件和循环
    git基本使用(搭建Git服务器)
    面试题整理
    node nvm npm nrm 安装
    onmouse事件
    webpack
    web前端UI框架
    javascript cookie
    三大家族,offset,scroll,client
    clientTop,scrollTop,兼容
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/3624786.html
Copyright © 2020-2023  润新知