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

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

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

[转帖] 原来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

[转帖]Shell三剑客之awk

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

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

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

[转帖]19.awk报告生成器,文本解释器

在本博客中,AWK是一个系列文章,本人会尽量以通俗易懂的方式递进的总结awk命令的相关知识点。 awk系列博文直达链接:AWK命令总结之从放弃到入门 我们先来用专业的术语描述一下awk是什么,如果你看不懂,没关系,我们会再用”大白话”解释一遍。 awk是一个报告生成器,它拥有强大的文本格式化的能力,

[转帖]awk 文本处理

https://juejin.cn/post/6844903860629143559 awk 文本处理 awk 是一种样式扫描和处理语言,使用 Linux 的 awk 命令可以高效快捷地进行文本处理。awk 扫描文本的每一行并执行指定的命令。 awk 诞生于 1977 年,借鉴了 C 语言等编程语言

[转帖]awk 中 FS的用法

https://www.cnblogs.com/rohens-hbg/p/5510890.html 在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /