awk的简单样例

awk,简单 · 浏览次数 : 188

小编点评

```shell #!/bin/bash # 1. 读取文件并初始化变量 total=$(cat input.txt | awk '{sum[$1]+=$2}END{for(c in sum){print c,sum[c]}}') # 2. 按列求和 for i in $total; do echo "$i,${sum[$i]}" done # 3. 按条件求和 cat input.txt | awk '/aaa/{sum += $1} END {print sum}' # 4. 按列求平均值 cat input.txt | awk '{a+=$1}END{print a/NR}' # 5. 按列求最大值 cat input.txt | awk;'BEGIN{a=0}{if&;($1>a)&;a=$1&}END{print a}' # 6. 按列求最小值 cat input.txt | awk 'BEGIN{a=11111}{if ($1<a) a=$1&}END{print a}' # 7. 求全文最值 cat input.txt | awk '{a[$1]=a[$1]\" \"$2}END{for(i in a)print i,a[i]}' ```

正文

shell awk求和 当第一列相同时,对应的第二列相加

awk'{sum[$1]+=$2}END{for(c in sum){print c,sum[c]}}'输入文件名

 

在Shell中,我们可以用awk实现按列求和的功能,非常简单

1. 简单的按列求和

cat num.txt | awk '{sum += $1} END {print sum}'

2.对符合某些条件的行,按列求和

cat num.txt | awk ' /aaa/{sum += $1} END {print sum}'

3. 列求和: 

cat you.txt |awk '{a+=$1}END{print a}'

4. 列求平均值:

cat you.txt |awk '{a+=$1}END{print a/NR}'

5.列求最大值:

cat you.txt |awk 'BEGIN{a=0}{if ($1>a) a=$1 fi}END{print a}'

设定一个变量开始为0,遇到比该数大的值,就赋值给该变量,直到结束。

6. 求最小值:

cat you.txt |awk 'BEGIN{a=11111}{if ($1<a) a=$1 fi}END{print a}'   

7. 求全文的最值

awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i,a[i]}' test.txt |awk '{print $1":",$2";",$3}'

与awk的简单样例相似的内容:

awk的简单样例

shell awk求和 当第一列相同时,对应的第二列相加 awk'{sum[$1]+=$2}END{for(c in sum){print c,sum[c]}}'输入文件名 在Shell中,我们可以用awk实现按列求和的功能,非常简单 1. 简单的按列求和 cat num.txt | awk '{s

[转帖] 原来awk真是神器啊

https://www.cnblogs.com/codelogs/p/16060082.html 简介# 刚开始入门awk时,觉得awk很简单,像是一个玩具,根本无法应用到工作之中,但随着对awk的了解不断加深,就会越发觉得这玩意的强大,大佬们称其为上古神器,绝不是空穴来风。这也可以说明,一些热门的

[转帖]《AWK程序设计语言》笔记(1)—— AWK入门与简单案例

原文为 《The AWK Programming Language》,GitHub上有中译版,不过有些内容翻译的比较奇怪,建议跟原版对照着看 https://github.com/wuzhouhui/awk 本篇的小案例基本均基于文件 emp.data,三个字段分别为:员工名、每小时工资、工作时长,

Linux时间戳转换成易读格式的方法

背景 最近一直在学习Redis相关的知识. 其中遇到了一个redis monitor的命令 但是这里有一个问题是: 原生命令查询出来的时间是Unix时间戳格式的. 不太好发现查看与进行对照. 所以今天中午就进行了简单的学习,希望能够最简单的方式进行转换. 思路 认为awk命令一个就够了. 但是自己a

[转帖] q命令-用SQL分析文本文件

https://www.cnblogs.com/codelogs/p/16060830.html 简介# 在Linux上分析文本文件时,一般会使用到grep、sed、awk、sort、uniq等命令,但这些命令都有一定的学习成本,而如果是用SQL来分析数据的话,这对广大后端程序员来说,就要简单很多了

[转帖]Shell三剑客之awk

目录 awk简述awk的工作过程awk的工作原理awk的基本格式及其内置变量getline文本内容匹配过滤打印对字段进行处理打印条件判断打印awk的三元表达式与精准筛选用法awk的精准筛选:awk的分隔符用法指定输出的分隔符awk结合数组运用面试题 awk简述 在 Linux/UNIX 系统中,aw

[转帖] Linux命令拾遗-文本处理篇

https://www.cnblogs.com/codelogs/p/16060413.html 简介# 这是Linux命令拾遗系列的第二篇,本篇主要介绍Linux中与文本处理相关的命令,如xargs、grep、sed、awk等。 本系列文章索引Linux命令拾遗-入门篇 常用文本相关命令# cat

[转帖] Linux文本命令技巧(上)

Linux文本命令技巧(上) 原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介# 前一篇我介绍了awk,这是一个全能的文本处理神器,因为它本身就是一门编程语言了,但对于很多场景,使用Linux预设的一些文本处理命令,会更方便快捷,如grep、sed等。本篇就来介绍

[转帖] q命令-用SQL分析文本文件

https://www.cnblogs.com/codelogs/p/16060830.html 原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介# 在Linux上分析文本文件时,一般会使用到grep、sed、awk、sort、uniq等命令,但这些命令都有一定的

[转帖]SHELL—— awk两个特殊模式(BEGIN 和 END)及awk高级应用(条件判断、循环)

一、Awk 的两个特殊模式 BEGIN 和 END,BEGIN 被放置在没有读取任何数据之前,而 END 被放置在所有的数据读取完成以后执行体现如下: BEGIN{}: 读入第一行文本之前执行的语句,一般用来初始化操作 {}: 逐行处理 END{}: 处理完最后以行文本后执行,一般用来处理输出结果