• awk命令


    语法:

    awk  [options]   'Pattern{Action}'   file

    选项:

    -F  指定分隔符

    -v  设置变量值,

    变量:

    内置变量:

    FS  输入字段分隔符, 默认为空白字符

    OFS  输出字段分隔符, 默认为空白字符

    RS  输入记录分隔符(输入换行符), 指定输入时的换行符

    ORS  输出记录分隔符(输出换行符),输出时用指定符号代替换行符

    NF  number of Field,当前行有多少列,字段数量

    NR  number of ROW,行号,当前处理的文本行的行号。

    FNR  当awk处理多个文件时,分别对每个文件的行数进行计数

    FILENAME  当前文件名

    ARGC  命令行参数的个数

    ARGV  表示的是一个数组,这个数组中保存的是命令行所给定的参数,awk规定,'pattern{ action }'并不被看做是参数,awk被看做为参数。

    举例:

    1、AWK 包含两种特殊的模式:BEGIN 和 END。

    BEGIN 模式指定了处理文本之前需要执行的操作:

    END 模式指定了处理完所有行之后所需要执行的操作:

    [root@localhost] ~$ awk 'BEGIN{print "aaa","bbb"} {print $1,$2} END{print "ccc","ddd"}' t
    aaa bbb
    a b
    h i
    o p
    r s
    u v
    ccc ddd

    2、指定输出分隔符

    [root@localhost] ~$ awk -v OFS="+++" '{print $1,$2}' xargs.txt 
    a+++b
    h+++i
    o+++p
    r+++s
    u+++v

    3、使用变量NR NF

    [root@localhost] ~$ awk '{print NR,NF}' xargs.txt 
    1 7
    2 7
    3 3

    4、使用变量NFR

    [root@localhost] ~$ awk '{print FNR,$0}' 1.txt 2.txt 
    1 aaa bbb
    2 ccc ddd
    1 AAA BBB
    2 CCC DDD

    5、使用变量RS,使用空格作为所谓的行分隔符,也就是说,我们想让awk认为,每遇到一个空格,就换行,换句话说,我们想让awk以为每次遇到一个空格就是新的一行。

    [root@localhost] ~$ awk -v RS=" " '{print FNR,$0}' 1.txt 
    1 aaa
    2 bbb
    ccc
    3 ddd

     6、使用ARGV

    [root@localhost] ~$ awk '{print "aaa",ARGV[0],ARGV[1],ARGV[2]}' 1.txt 2.txt 
    aaa awk 1.txt 2.txt
    aaa awk 1.txt 2.txt
    aaa awk 1.txt 2.txt
    aaa awk 1.txt 2.txt
  • 相关阅读:
    react className 有多个值时的处理 / react 样式使用 百分比(%) 报错
    更改 vux Tabbar TabbarItem标题下方的文字激活时的颜色
    angular 图片加载失败 情况处理? 如何在ionic中加载本地图片 ?
    angular 资源路径问题
    webpack 项目实战
    百度地图 创建 自定义控件(vue)
    function 之 arguments 、call 、apply
    手写 redux 和 react-redux
    ARC以及MRC中setter方法的差异
    运行时中给一个对象绑定另外一个对象
  • 原文地址:https://www.cnblogs.com/fanren224/p/8467425.html
Copyright © 2020-2023  润新知