• Linux之awk使用


    基本语法

    • $n :当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段
    • $0:执行过程中当前行的文本内容
    • :制表符
    • :换行符
    • -F'[:#/]' : 定义三个分隔符,注意有-F和无-F的区别,无-F直接用空格作为分隔符
    • BEGIN: 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
    • END:结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
    • 一行一行输出file中内容:
    awk '{print}'  file
    
    • 输出相同个数的a行,一行只有一个a:
    awk '{print "a"}'  file
    
    • 将每一行的第一个字段和a,分行输出:
    awk -F: '{print $1; print "a"}'  file
    
    • 输出每一行的第一个字段后直接输出a,不换行:
    awk -F: '{print $1; print "a"}'  file
    
    • 输出行号:
    awk '{print NR,$0}' result
    
    • 显示第五行:
    awk -F: 'NR==5{print}' result
    
    • 每隔五行显示:
    awk -F: 'NR%5==1{print}' result
    
    • 显示第一个元素是开始时右端项非零元的第二个元素
    awk '{if($1=="开始时右端项非零元:"){printf $2 "	 ";}}' result
    

    统计文本信息

    要统计的文本信息存在grade.txt中

    Marry   2143 78 84 77
    Jack    2321 66 78 45
    Tom     2122 48 77 71
    Mike    2537 87 97 95
    Bob     2415 40 57 62
    

    则统计代码如下:

    awk 'BEGIN{math=0;eng=0;com=0;printf "Lineno.   Name    No.    Math   English   Computer    Total
    ";printf "------------------------------------------------------------
    "}{math+=$3; eng+=$4; com+=$5;printf "%-8s %-7s %-7s %-7s %-9s %-10s %-7s 
    ",NR,$1,$2,$3,$4,$5,$3+$4+$5} END{printf "------------------------------------------------------------
    ";printf "%-24s %-7s %-9s %-20s 
    ","Total:",math,eng,com;printf "%-24s %-7s %-9s %-20s 
    ","Avg:",math/NR,eng/NR,com/NR}'  grade.txt
    

    例子2

    #!/bin/bash
    dir=./data/KnapsepInstances/KnapsepInstances/CNLP
    rm 1.out
    for file in $dir/*.lp
    do
       filename=$(basename $file .lp)
       echo $file
       ./bin/main $file > temp
       awk -F" " '{if($2=="name:"){print$3}}' temp >>1.out
       awk -F" " '{if($1=="LIFT"){print"LIFT time: "$4}}' temp >>1.out
       awk -F" " '{if($1=="nodes"){print"Nodes: "$3}}' temp >>1.out
    done
    
  • 相关阅读:
    ALINK(十):数据导入与导出 (三)Catalog读入 (CatalogSourceBatchOp)
    ALINK(九):数据导入与导出 (二)Text文件读入 (TextSourceBatchOp)
    ALINK(八):数据导入与导出 (一)CSV文件读入 (CsvSourceBatchOp)
    机器学习sklearn(四): 数据处理(一)数据集拆分(一)train_test_split
    机器学习sklearn(三):加载数据集(数据导入)
    机器学习sklearn(二):SKLEARN快速开始
    机器学习sklearn(一):教程与资料
    程序员的代码的基本素养
    mysql常用函数和语句模式
    BootStrap学习
  • 原文地址:https://www.cnblogs.com/qujingtongxiao/p/10114966.html
Copyright © 2020-2023  润新知