基本语法

  • $n :当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段
  • $0:执行过程中当前行的文本内容
  • \t:制表符
  • \n:换行符
  • -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 "\t ";}}' 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\n";printf "------------------------------------------------------------\n"}{math+=$3; eng+=$4; com+=$5;printf "%-8s %-7s %-7s %-7s %-9s %-10s %-7s \n",NR,$1,$2,$3,$4,$5,$3+$4+$5} END{printf "------------------------------------------------------------\n";printf "%-24s %-7s %-9s %-20s \n","Total:",math,eng,com;printf "%-24s %-7s %-9s %-20s \n","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

最新文章

  1. 探求网页同步提交、ajax和comet不为人知的秘密(上篇)
  2. python类相关
  3. S2小测--索引--视图
  4. Linux常用指令---定时任务
  5. http技术交流提纲
  6. 由浅到深讲解C#-LINQ
  7. SQLServer中查询的数字列前面补0返回指定长度的字符串
  8. tomcat使用memcached完成集群
  9. 局域网接入Internet
  10. Spring MVC 和Struts2对比
  11. boost锁的概述
  12. (中等) HDU 4370 0 or 1,建模+Dijkstra。
  13. balance.go 源码阅读
  14. tomcat-四种运行模式和三种部署模式(优化)
  15. Warning: Failed to halt at after bootloader, forced stop at
  16. HNOI2019 简要题解
  17. formidable模块的使用
  18. 整合Spring框架和Hibernate框架
  19. TP框架---Model模型层---做模型对象
  20. docker容器的启动、停止、运行、导入、导出、删除

热门文章

  1. Tsinsen A1206. 小Z的袜子
  2. openstack通过Network Namespace和iptables实现租户私有网络互訪和L3路由功能
  3. C#创建PDF文档
  4. UVA 294 - Divisors 因子个数
  5. Java-MyBatis:MyBatis XML 文件
  6. v-cli环境的安装
  7. 27.Qt时钟
  8. Oracle学习系类篇(二)
  9. 软件测试中的fault,error,failure
  10. 五年磨一剑:Java 开源博客 Solo 1.0.0 发布了!