• awk、变量、运算符、if多分支


    awk、变量、运算符、if多分支

    awk

    语法
    awk [options] 'commands' files
    option
    -F 定义字段分隔符,默认的分隔符是连续的空格或制表符
    使用option中的-F参数定义间隔符号
    用$1,$2,$3等的顺序表示files中每行以间隔符号分隔的各列不同域
    NF变量表示当前记录的字段数
    -v 定义变量并赋值 也可以借用次方式从shell变量中引入

     

    NR变量定址:

    NR 表示AWK读入的行数
    FNR表示读入行所在文件中的行数
    # awk '{print NR,FNR,$1}' file1 file2 
    1 1 aaaaa
    2 2 bbbbb
    3 3 ccccc
    4 1 dddddd
    5 2 eeeeee
    6 3 ffffff

    逻辑运算 可直接引用域进行运算
    == >= <= != > < ~ !~
    # awk 'NR==1 {print}' /etc/passwd
    root:x:0:0:root:/root:/bin/bash

    3.命令 {print $0}
    4.读后处理 END {awk_cmd1;awk_cmd2;}

     

    NR 表示AWK读入的行数:
    FNR表示读入行所在文件中的行数
    # awk '{print NR,FNR,$1}' file1 file2 
    1 1 aaaaa
    2 2 bbbbb
    3 3 ccccc
    4 1 dddddd
    5 2 eeeeee
    6 3 ffffff
    #
    逻辑运算 可直接引用域进行运算
    == >= <= != > < ~ !~
    # awk 'NR==1 {print}' /etc/passwd
    root:x:0:0:root:/root:/bin/bash

    3.命令 {print $0}
    4.读后处理 END {awk_cmd1;awk_cmd2;}

     

    引用shell变量的方法:

    # a=root
    # awk -v var=$a -F: '$1 == var {print $0}' /etc/passwd
    或者 把整个命令拆开传递,让shell变量外露,
    # awk -F: '$1 == "'$a'" {print $0}' /etc/passwd
    # a=NF
    # awk -F: '{print $'$a'}' /etc/passwd

     

    操作符

    赋值
    = += -= /= *= 

    逻辑与 逻辑或 逻辑非
    && || !
    匹配正则或不匹配,正则需要用 /正则/ 包围住
    ~ !~
    关系 比较字符串时要把字符串用双引号引起来
    < <= > >= != ==
    字段引用
    $ 字段引用需要加$,而变量引用直接用变量名取
    运算符
    + - * / % ++ --

    分支结构:

    if (条件) 动作
    若有多个动作,则要用大括号将动作体包含起来 if (条件) {动作1;动作2}
    # awk -F: '{if ($1 == "root") print $1}' /etc/passwd
    root

    # awk -F: '{if ($1 == "root") {print $1;print $6}}' /etc/passwd
    root
    /root

    输出样式:
    %s是字符类型,%d数值类型
    printf默认是不输出换行的所以要加
    10和7是偏移量
    默认是右对齐,所有加个- 就是左对齐,就是把不足的位数用空格填充
    注意:格式与输出列之间要有逗号
    # awk -F: '{printf "%-10s %-10d %s ",$1,$3,$7}' /etc/passwd

  • 相关阅读:
    登录界面
    动手动脑
    关于二进制
    Java考试
    D
    威尔逊定理 k!%p
    11.46.2020质检
    最长上升序列输出方案
    问题 G: 汽车的最终位置
    奶牛大会(二分)
  • 原文地址:https://www.cnblogs.com/niejinmei/p/6607031.html
Copyright © 2020-2023  润新知