zoukankan      html  css  js  c++  java
  • awk笔记

    awk 
    # 内建常量
    FILENAME     当前输入文件的名称
    FNR          输入文件的记录数
    FS           输入分隔符
    NF           当前记录的字段数
    NR           工作job中的记录数
    OFS          输出字段分割符,默认' '
    ORS          输出记录分隔符,默认'
    '
    RS           输入记录分隔符,默认'
    '
    ARGC         命令行参数的数目。
    ARGIND       命令行中当前文件的位置(从0开始算)。
    ARGV         包含命令行参数的数组。
    CONVFMT      数字转换格式(默认值为%.6g)
    ENVIRON      环境变量关联数组。
    ERRNO        最后一个系统错误的描述。
    FIELDWIDTHS  字段宽度列表(用空格键分隔)。
    IGNORECASE   如果为真,则进行忽略大小写的匹配。
    OFMT         数字的输出格式(默认值是%.6g)。
    RLENGTH      由match函数所匹配的字符串的长度。
    RSTART       由match函数所匹配的字符串的第一个位置。
    SUBSEP       数组下标分隔符(默认值是034)。
    
    # 字段引用
    $0指当前行
    $1,$2,$3...指定记录中的第n个字段,也可指定分隔符
    echo 'one two three four' | awk '{ print $1,$2,$3 }'
    echo 'one two three four' | awk '{OFS="
    " print $1,$2,$3 }'
    
    
    # 字符串函数
    sub         匹配记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的 时候
    gsub        整个文档中进行匹配
    index       返回子字符串第一次被匹配的位置,偏移量从位置1开始
    substr      返回从位置1开始的子字符串,如果指定长度超过实际长度,就返回整个字符串
    split       可按给定的分隔符把字符串分割为一个数组。如果分隔符没提供,则按当前FS值进行分割
    length      返回记录的字符数
    match       返回在字符串中正则表达式位置的索引,如果找不到指定的正则表达式则返回0。match函数会设置内建变量RSTART为字符串中子字符串的开始位 置,RLENGTH为到子字符串末尾的字符个数。substr可利于这些变量来截取字符串
    
    # 示例:
    awk 'NR>19&&NR<31' ett.txt          打印20~30行
    awk '{print NR,$0}' /etc/inittab    给目标文件加行号
    awk ‘NR==24 {print NR,$0}’ /etc/inittab 输出第24行并且加行号
    awk 'BEGIN{RS="[/]+"} NR==2{print NR,$2}' test   以一个或多个/为行的分割符,打印第二行的第二列,列的分隔符为默认的空格,并打印行号
    awk -F ":" '$5~/^s/{print $0}' /etc/passwd  以:为分隔符,打印第5列以s开头的一整行
    awk -F "/" '$(NF-1)~/(s|)bin/' /etc/passwd    以/为分隔符,匹配倒数第二行的s或者没有s后面是bin的整行 
    awk '$1~/^(ssh|ftp|mysql)$/{print $1,$2}' /etc/services  匹配第一列以ssh或者ftp或mysql开头或者结尾的行
  • 相关阅读:
    洛谷-P2430 严酷的训练
    Hackthebox网络不稳定的解决方案
    解压
    谷歌地图API密钥未授权利用
    关于读取heapdump踩的一个小坑
    RECON
    最近思考
    go get
    Js跳转
    Session
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/9848934.html
Copyright © 2011-2022 走看看