zoukankan      html  css  js  c++  java
  • shell

    AWK

    # begin 行处理前
    awk 'BEGIN {FS=":" ; OFS="+++++++++++"} {print $1,$3}' /etc/passwd
    # 处理前,处理中,处理后
    BEGIN{处理前}   {行处理}   END{处理后}
    awk 'BEGIN {print 1/2} {print 'ok'} END {print 'over'}' /etc/passwd
    print 'ok'  为行处理,passwd 有两行则打印两个
    
    #  匹配内容
    awk '/root/' /etc/passwd
    # 处理动作
    awk '{action}' filename
    awk -F: '{print $1}' /etc/passwd
    # 匹配+处理动作
    awk -F ":" '/root/ {print $1,$2}' /etc/passwd
    # 判断大于多少则输出
    df|awk '/$/ {if ($3>500000) print $4}'
    

    awk 工作原理

    # awk -F ":" '{print $1,$3}' /etc/passwd
    1. 载入文件中的第一行,然后将这一行放入模式空间,并将彼此赋值给¥0
    2. 通过字段分隔符,切割整行的内容,并将切割后的字段按$0,$1,$2
    3. 检查print函数需要打印的字段,然后从模式空间中取出字段对应的值
    4. 默认结果以空格为分隔,也可修改OFS内部变量调整
    5. 将结果输出到终端,awk开始循环1-5步骤
    
    -F  由FS内部变量决定整行内容如何存储在模式空间
    	也可以使用航处理前的操作 BEGIN{FS=":"}
    
    1. 同时指定多个分隔符
    awk -F "[: ]" '{print $2}' file.txt
    awk -F "[: ]+" '{print $2}' file.txt 
    2. 内置变量
    # NF 统计一行一共有多少列
    $NF  保存最后一列的值(永远代表最后一行)
    $(NF-1)  倒数第二行
    
    # NR表示行号
    awk '{print NR,$0}' file.txt
    awk 'NR!=3 {print $0}' file.txt
    grep -n "." file.txt  # 显示行号
    # FNR, 处理多个文件用到的
    awk '{print FNR,$0}' A.TXT B.TXT
    行号12345 12345
    打印第二行到第三行
    awk 'NR>1&&NR<4 {print $0}' a.txt
    # FS指定字段分隔符,默认空格
    awk -F: '/root/{print $1,$3}' /etc/passwd
    awk 'BEGIN{FS=":"} {print $1,$3}' /etc/passwd   
    awk -F '[ :	]' '{print $1,$2}' /etc/passwd
    # OFS 指定输出字段分隔符
    ,逗号映射为OFS. 初始情况下OFS变量是空格
    awk -F: '/root/{print $1,$2}' /etc/passwd
    awk -F: 'BEGIN{OFS="-------"} /root/{print $1,$2}' /etc/passwd
    
    
    
  • 相关阅读:
    hibernate 核心包与核心接口介绍
    Maven2 的常用命令
    更改SVN登录用户
    配置修改Eclipse自动生成的注释信息
    hibernate 核心包与核心接口介绍
    hibernatedaosupport的使用
    表单提交
    添加ftp用户,等7788
    php 信息
    ecshop 表结构 (转)
  • 原文地址:https://www.cnblogs.com/Afrafre/p/11405738.html
Copyright © 2011-2022 走看看