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. 借助adb与gdb确认app内存缓存中是否存在用户敏感数据

    一.环境准备 1. 搭建adb调试桥 可参考文章<ADB调试桥安装(方式二)> 2. 安装调试gdb工具 可参考文章<移动设备中导入gdb调试工具> 二.测试执行 root@G ...

  2. 阿里Druid数据库连接池使用

    阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好 可以监控连接以及执行的SQL的情况. 加入项目的具体步骤: 1.导入jar <parent> ...

  3. 【资料分享】 OpenCV精华收藏

    OpenCV精华收藏 SkySeraph Dec.29th 2010  HQU Email:zgzhaobo@gmail.com    QQ:452728574 Latest Modified Dat ...

  4. HttpClient 4.x 执行网站登录并抓取网页的代码

    HttpClient 4.x 的 API 变化还是很大,这段代码可用来执行登录过程,并抓取网页. HttpClient API 文档(4.0.x), HttpCore API 文档(4.1) pack ...

  5. Eclipse 下如何删除一个项目的 SVN 信息

    选中项目,右键 - Team - 断开连接 出现如下对话框,根据需要,选择 “删除”或者“不删除”,点击 Yes 即可

  6. G-sensor 与M-sensor区别

    g-sensor是重力传感器,能感应芯片在三个方向(通常是)上的重力加速度.手机里的重力球用的就是这个技术,m-sensor如果是motion sensor的简称的话,基本上指的和g-sensor是一 ...

  7. Mtk Android 打包解包*.img

    打包/解包 boot.img, system.img, userdata.img, or recovery.img [DESCRIPTION] MTK codebase编译出来的image必须使用MT ...

  8. HeadFirst jsp 03 (MVC)

    创建一个小的 web 应用, mvc, 麻雀虽小, 五脏俱全 补1: servlet没有main()方法, 他们受控与另外一个Java应用, 这个Java应用称为 容器, tomcat就是这么一个容器 ...

  9. JSON 之 SuperObject(9): TSuperType

    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

  10. CodeSmith datagridview属性

    private void button1_Click(object sender, EventArgs e) //将数据库里的数据直接显示在datagridview1里面 { SqlConnectio ...