• AWK之随心所欲-高手篇


    1.内置变量

    变量名 描述
    FS 输入字段分隔符,默认是空格或制表符
    OFS 输出字段分隔符,默认是空格
    RS 输入记录分隔符,默认是换行符
    ORS 输出记录分隔符,默认是换行符
    NF 统计当前记录中字段个数
    NR 统计记录编号,每处理一行记录,编号就会+1
    FNR 统计记录编号,每处理一行记录,编号也会+1,与 NR 不同的是,处理第二个 文件时,编号会重新计数。
    ARGC 命令行参数数量
    ARGV 命令行参数数组序列数组,下标从 0 开始,ARGV[0]是 awk
    ARGIND 当前正在处理的文件索引值。第一个文件是 1,第二个文件是 2,以此类推
    ENVIRON 当前系统的环境变量
    FILENAME 输出当前处理的文件名
    IGNORECASE 忽略大小写
    SUBSEP 数组中下标的分隔符,默认为"34"

    1.1. FS和OFS

    程序开始前复制给FS,与-F一样用

    [root@192 ~]# head -n5 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    [root@192 ~]#
    [root@192 ~]# head -n5 /etc/passwd|awk 'BEGIN{FS=":"}{print $1,$2}'
    root x
    bin x
    daemon x
    adm x
    lp x
    OFS由于默认是空格,输出如果是:,那么逗号会变为*
    [root@192 ~]# head -n5 /etc/passwd|awk 'BEGIN{FS=":";OFS="*"}{print $1,$2}'
    root*x
    bin*x
    daemon*x
    adm*x
    lp*x
    

    1.2. RS和ORS

    RS默认
    ,指定分割符 ,ORS默认换行符,也可以指定输出符号
    也就是说 将分割符换成你想要的样子
    
    [root@192 ~]# tail -n2  /etc/services |awk 'BEGIN{RS="/";ORS="+"}{print $0}'
    iqobject        48619+udp               # iqobject
    matahari        49000+tcp               # Matahari Broker
    

    1.3. NF

    字段统计
    [root@192 ~]# tail -n2 /etc/services |awk 'BEGIN{FS="/"}{print $NF}'
    tcp               # 3GPP Cell Broadcast Service Protocol
    tcp               # Image Systems Network Services
    
    [root@192 ~]# tail -n 2 /etc/services |awk 'BEGIN{FS="/"}{print NF}'
    2
    2
    
    
  • 相关阅读:
    Web 组件是什么
    amazeui学习笔记二(进阶开发2)--Web组件简介Web Component
    .less为后缀的文件是什么
    amazeui学习笔记二(进阶开发1)--项目结构structure
    html中的瀑布流是什么
    HTML5 API 是什么
    epoll使用具体解释(精髓)
    DataTable.AcceptChanges方法有何用处
    cer, pfx 创建,而且读取公钥/密钥,加解密 (C#程序实现)
    超赞的.NET办公软件库
  • 原文地址:https://www.cnblogs.com/linux-error/p/11237220.html
Copyright © 2020-2023  润新知