1、if while命令写在一行中
while read a b;do echo $a $b;done < aa.txt
12 13 14
cat aa.txt
12 13 14
if [[ $i -eq 0 || $i -eq 2 ]] ;then env=10.79.40.146:80 ;else env=10.79.40.147:80 ; fi
2、awk 合并两个文件
account cdr
cat account
张三|000001
李四|000002
cat cdr
000001|10
000001|20
000002|30
000002|15
合并后的结果为
张三|000001|10
张三|000001|20
李四|000002|30
李四|000002|15
命令:awk -F \| 'NR==FNR{a[$2]=$0;next}{print a[$1]"|"$2}'
解释:
NR (Number of Record) 表示awk执行所读取的数据行数
FNR (Number of Record in File) 跟NR类似,不同是awk每打开一个新文件,FNR便从0开始重新累计
3、while拼接文件
#将afile文件中的前三行与bfile中的前四行拼接在一起
while read -u3 i && read -u4 j;do
echo $i $j
done 3<afile 4<bfile
4、awk的分组求和
cat file.txt
机构名,姓名,状态,金额
江南 雷明凯 失败 420
江南 雷明勋 成功 300
江南 苟秀华 成功 60
白塔 苟应平 失败 360
白塔 苟应军 失败 180
水观 苟应辉 成功 240
水观 苟应东 失败 60
水观 苟应训 失败 120
水观 苟应勋 成功 360
石滩 侯应明 失败 300
石滩 侯兴文 成功 360
石滩 侯兴华 成功 120
要求:
1、全部金额计数和求和;
2、按状态分类计数和求和;
3、按机构名和状态计数和求和
结果如下:
12 2880 
成功 6 1440
失败 6 1440
江南 成功 2 360
江南 失败 1 420
白塔 失败 2 540
水观 成功 2 600
水观 失败 2 180
石滩 成功 2 480
石滩 失败 1 300
命令:
#!/bin/bash
echo "全部金额计数和求和"
awk '{if(NR!=1){total+=$4;sum++}}END{print total, sum}' file.txt
echo "按照状态计数和求和"
awk '{if(NR!=1){a[$3]+=$4;b[$3]++}}END{for (i in a){print i,a[i],b[i]}}' file.txt
echo "按照机构和状态计数和求和"
#NR!=1 跳过header,a[$1" "$3] 在1 3 之间加入空格,方便最后的排序
awk '{if(NR!=1){a[$1" "$3]+=$4;b[$1" "$3]++}}END{for (i in a){print i,a[i],b[i]}}' file.txt|sort -k 4

shell 中awk、if while 例子的更多相关文章

  1. shell中awk用法

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  2. shell中awk printf的用法

    打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表符并不能保证得到想要的输出,因此,可以用printf函数来格式化特别的输出. printf函数返回一个带格式的字符串给 ...

  3. 转载:shell中awk printf的用法

    转载:http://www.linuxawk.com/jiaocheng/83.html 6. printf函数   打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表 ...

  4. 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧

    目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...

  5. 转shell中的awk用法详解

        awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本文件中的信息 调用awk:   第一种,命令行方式 ...

  6. Shell中特殊符号

    http://blog.chinaunix.net/u1/53027/showart.php?id=482234 在shell中常用的特殊符号罗列如下:# ;    ;;       .       ...

  7. Shell中的正则表达式及字符串处理

    shell里一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所 ...

  8. linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)

    tips: ============================= IFS - LINUX字段分隔符,内部字段分隔符 IFS(Internal Field Seperator)在Linux的she ...

  9. shell 中的特殊符号的含义

    来源:http://blog.sina.com.cn/s/blog_62a151be0100x9rn.html 第四章 基本功 - 特殊符号 学习撰写 script 最迅速的捷径是观摩别人的 scri ...

随机推荐

  1. AngularJs+bootstrap搭载前台框架——准备工作

    1.关于什么是AngularJs以及什么是bootstrap我就不多说了,简单说下,AngularJs是一个比较强大前台MVC框架,bootstrap是Twitter推出的一个用于前端开发的开源工具包 ...

  2. git源码推荐

    http://git.oschina.net/explore/monthly http://git.oschina.net/juapk/spring-wind http://git.oschina.n ...

  3. z-index无效问题的解决方法

    在使用z-index这个属性之前,我们必须先了解使用z-index的必要条件: 1.要想给元素设置z-index样式,必须先让它变成定位元素,说的明白一点,就是要给元素设置一个postion:rela ...

  4. 【USACO】【section1.1】Your Ride Is Here

    以前的账号忘记了,只能从头了. 入门题不解释,就是sumg和sumc初始值置1不能置0.开始享用一个循环计算出sumg和sumc,其实两个数组最大程度为6,节省不了什么时间. /*ID:Moment1 ...

  5. [每天一道A+B]签到检测程序

    签到检测程序,解析github提供的api内的json,解决了服务器和本地时间不同步的问题(时差+8H),实现按日期更新当前签到表.下一步是从api获取organization的信息,求出未签到的成员 ...

  6. leetcode:Intersection of Two Linked Lists(两个链表的交叉点)

    Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...

  7. pl/sql programming 15 数据提取

    数据提取 -- 游标 游标只是一个指向某个结果集的指针. 声明游标: cursor employee_cur IS select * from employees; 打开游标: open employ ...

  8. [转]使用 jQuery Mobile 与 HTML5 开发 Web App —— jQuery Mobile 事件详解

    在前文<使用 jQuery Mobile 与 HTML5 开发 Web App —— jQuery Mobile 默认配置与事件基础>中,Kayo 对 jQuery Mobile 事件的基 ...

  9. Http进行网络通信

    http使用get的方式进行网络通信: package com.testGet; import java.io.BufferedReader; import java.io.IOException; ...

  10. hdu 1226 超级密码(bfs+余数判重)

    题意:略过 分析:用m个数字组成一个能够被n整除的c进制数的最小值,实际上本题的关键就在于这个最小值上.  首先确定我们的思路是从小到大寻找.先查看一位数,即查看着m个数字是否能被n整除:若不能,就查 ...