zoukankan      html  css  js  c++  java
  • shell awk命令

    语法:

    awk '{command}' filename  多个命令以分号分隔

    awk 'BEGIN {command1} {command2} END{command3}'  注意:BEGIN ,END 需要大写

    常用变量说明:

    FS : 指定分隔符,默认是空格和tab 。 也可以简写 -F ";"

    NR: 目前处理的是【第几行】数据 ,文件中的行标

    NF: 每一行的列数(段、栏位)

    例子1:

    # 以tab作为分隔符
    # print $0 表示打印所有列, $1 表示打印第一列 ,不写默认打印所有列
    
    # 打印所有列,用 -F 指定分隔符 ,$0
    awk -F "	" '{print $0}' zss_test.txt
    # 打印所有列,用 -F 指定分隔符
    awk -F "	" '{print }' zss_test.txt
    # 打印所有列,用 FS 指定分隔符
    awk 'FS=="	"; {print $0}' zss_test.txt

    打印结果1:

    例子2:

    ##查看文件内容
    cat -n zss_test.txt
    
    ##NR,NF使用
    awk 'FS=="	"; {print $1 "	 rows:"NR "	 columns:"NF}' zss_test.txt
    
    ##利用NF,打印最后一列
    awk -F "	" '{print $NF}' zss_test.txt

    打印结果2:

    例子3:

    ##删除指定目录下的所有文件 慎用
    
    ls -l|awk '{print "rm -fr " $9}'|sh

    例子4:

    # 利用printf 格式化输出 %s 字符,%d 整数,%f 浮点 ; 
    # %10s 右对齐,长度10,实际长度大于设置长度,按实际长度
    # %-10s 左对齐,其他同上
    
    #打印文件内容
    cat -n kimbo_test.txt
    
    #打印第二行之后的,列1,列4
    awk -F"|" 'NR>=2{print $1,$4}' kimbo_test.txt
    #打印第二行之后的,列1,列4 ,利用printf格式话输出 ,列1左对齐
    awk -F"|" 'NR>=2{printf "%-30s	%5.2f
    ",$1,$4;}' kimbo_test.txt
    #打印第二行之后的,列1,列4 ,利用printf格式话输出 ,列1右对齐
    awk -F"|" 'NR>=2{printf "%30s	%5.2f
    ",$1,$4;}' kimbo_test.txt
    
    ##多个命令,可以分号分隔
    ## 打印第二行之后的,列1,列4 ,利用printf格式话输出 ,列1左对齐
    awk -F"|" 'NR>=2{printf "%-30s	",$1}; NR>=2{printf "%5d
    ", $4}' kimbo_test.txt 

    打印结果4:

    例子5:

    ##begin end 用法
    
    #打印第二行之后的,列1,列4
    awk -F"|" 'BEGIN {print "start-->"} NR>=2{print $1,$4} END{print "end"}' kimbo_test.txt

    打印结果5:

  • 相关阅读:
    C++如何对接sqlitepp
    c++11中的condition_variable和之前的pthread_cond_timedwait的不同之处
    浏览器设置代理模式后的报文是怎么样的?
    C++11中令人吐血的"移动语义"和"新的右值引用"
    MYSQL的事务及锁操作
    Microsoft Word —— 使用宏脚本将所有表格添加边框
    Navicat——如何导出数据字典
    Redis——配置详解
    keepalived——tengine集群主备均有VIP
    Docker——如何修改运行中容器的映射端口
  • 原文地址:https://www.cnblogs.com/kimbo/p/7054496.html
Copyright © 2011-2022 走看看