`

shell-awk

阅读更多
参考知识:
http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html
http://man.lupaworld.com/content/manage/ringkee/awk.htm
awk 是一个非常有用的文本处理工具。

特点:awk擅长将一行记录分割多个字段来分别处理的需求。

惯用模式:awk '条件类型1 {动作1} 条件类型2 {动作2}' filename

$0 :当前处理行记录
$1: 第一个分段
NF:每一行拥有的字段总数
NR:当前awk处理的第几行数据
FS:目前的分割字符,默认是空格。

BEGIN语句在所有文本处理动作执行之前被执行,比如:定义变量。
END语句在所有文本处理动作执行完之后才被执行。END语句在脚本中的位置放置在主要动作之后。 只执行一次,比如:输出最终结果。

注意点:与bash shell的变量不同,在awk中,变量可以直接使用,不需要加$符合。

指定分隔符:
   echo "a#b@c" |awk -F '[#@]' '{print $1 " " $2 " " $3}'

结果:
a b c

求最大值:
  cat num.txt |awk 'BEGIN{a=0}{if ($1>a) a=$1 fi}END{print a}'  


实践案例1:
获取ip地址
ifconfig | grep "inet addr"


结果:总共两行记录

          inet addr:192.168.234.134  Bcast:192.168.234.255  Mask:255.255.255.0
          inet addr:127.0.0.1  Mask:255.0.0.0

下面我们将 inet addr: 去掉
ifconfig | grep "inet addr"|sed 's/^.*inet addr://g'

结果:
192.168.234.134  Bcast:192.168.234.255  Mask:255.255.255.0
127.0.0.1  Mask:255.0.0.0

下面输出第一个字段的记录

ifconfig | grep "inet addr"|sed 's/^.*inet addr://g'|awk '{print $1}'


输出:
192.168.234.134
127.0.0.1


实践案例2:
对一个文本的所有行进行求和。

cat num.txt

输出:
1
2
3
4
5
6
7
8
9
10
awk '{num+=$1} END {print num}' num.txt 

输出:55

案例3:
求一个数字文件里的和。

cat num2.txt

结果:
                   1
2  3  4  5  6  7  8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28

for i in `cat num2.txt` ;do echo $i; done |awk 'BEGIN {a=0} {a+=$1} END {print a}'

结果:
406

案例4:
统计每个ip出现的次数。
178.60.128.31 www.google.com.hk
193.192.250.158 www.google.com
210.242.125.35 adwords.google.com
210.242.125.35 accounts.google.com.hk
210.242.125.35 accounts.google.com
210.242.125.35 accounts.l.google.com
64.233.181.49 www.google.com
212.188.10.167 www.google.com
23.239.5.106 www.google.com
64.233.168.41 www.google.com
62.1.38.89 www.google.com
62.1.38.89 chrome.google.com
193.192.250.172 www.google.com
212.188.10.241 www.google.com
37.228.69.57 www.google.com
222.255.120.42 www.google.com
222.255.120.42 www.gstatic.com
212.188.10.167 www.googleapis.com
64.233.181.49 www.googleapis.com
64.233.181.49 fonts.googleapis.com
193.192.250.158 plus.google.com
193.192.250.158 talkgadget.google.com
193.192.250.158 ssl.gstatic.com
193.192.250.158 images-pos-opensocial.googleusercontent.com
193.192.250.158 images1-focus-opensocial.googleusercontent.com
193.192.250.158 images2-focus-opensocial.googleusercontent.com
193.192.250.158 images3-focus-opensocial.googleusercontent.com
193.192.250.158 images4-focus-opensocial.googleusercontent.com
193.192.250.158 images5-focus-opensocial.googleusercontent.com
193.192.250.158 images6-focus-opensocial.googleusercontent.com
193.192.250.158 clients4.google.com
222.255.120.42 google.com
222.255.120.42 apis.google.com
222.255.120.42 clients1.google.com
193.192.250.158 clients2.google.com
193.192.250.158 clients3.google.com
193.192.250.158 clients5.google.com
64.233.181.49 maps.google.com
64.233.181.49 mts0.google.com
64.233.181.49 maps.gstatic.com

shell 代码:
awk '{ab[$1]++;}END{for(i in ab){print i , ab[i] }}' data.txt

输出:
212.188.10.241 1
64.233.168.41 1
23.239.5.106 1
193.192.250.158 15
178.60.128.31 1
37.228.69.57 1
212.188.10.167 2
193.192.250.172 1
62.1.38.89 2
64.233.181.49 6
210.242.125.35 4
222.255.120.42 5


案例5:
统计每个key对应的值的总和
4,3
5,4
4,2
2,93
3,32
4,49
5,20
6,2
8,1
2,1
3,1
4,3
2,7

awk -F',' '{ab[$1]=ab[$1]+$2;}END{for(i in ab){print i , ab[i] }}' a.txt  |sort

输出:
2 101
3 33
4 57
5 24
6 2
8 1
0
0
分享到:
评论

相关推荐

    【awk】1-awk基础篇(又名UNIX.Shell.awk).doc

    【awk】1-awk基础篇(又名UNIX.Shell.awk).doc

    shell编程---awk 培训资料

    **awk编程介绍** awk是一种强大的文本分析工具,尤其在处理和分析日志文件、配置文件等文本数据时,它的简洁性和高效性得到了广泛的认可。awk的设计理念是让开发者能够快速定位和操作文件中的特定行和字段,从而...

    shell编程-awk,sed,crontab

    在给定的压缩包文件中,我们聚焦于三个关键的Shell工具:awk、sed和crontab。下面将详细介绍这三个工具及其在Linux环境中的应用。 1. **awk**: - **基本概念**:awk是一种强大的文本分析工具,用于处理和打印数据...

    bash_SHELL开发教程1-awk

    awk '{ if(NR>1) print $0 }' /proc/net/tcp | awk 'BEGIN{ FS=" "} { print $2,$3,$4,$5,$8 }' | sed 's/:/ /g' | awk -F" " ' { if($5="01") print $1, $2, $3, "ESTABLISHED", $5, $6, $7, $8, $9; else if...

    linux命令--AWK用法简介

    3) 使用C Shell调用AWK执行脚本:`#!/bin/csh -fawk '{ print $8, "\t", $3}\'` 4) 直接以AWK作为脚本解释器:`#!/bin/awk -f{ print $8, "\t", $3}` 在使用AWK时,可以设置参数来调整其行为,例如: - `-F re`:...

    linux-Shell编程视频教程

    11.2.3 Shell编程-字符截取命令-awk命令.mp4 11.2.4 Shell编程-字符截取命令-sed命令.mp4 11.3 Shell编程-字符处理命令.mp4 11.4 Shell编程-条件判断.mp4 11.5.1 Shell编程-流程控制-if语句.mp4 11.5.2 Shell...

    shell和awk速度对比

    "shell和awk速度对比" 标题解释:shell和awk速度对比 在数据处理中,选择合适的工具是非常重要的。在本文中,我们将比较shell和awk两个工具在大数据处理中的速度差异。 描述解释:对于大数据量的数据处理,使用...

    shell、awk编程教材

    SHELL编程是Unix/Linux操作系统环境...总的来说,SHELL和AWK都是Unix/Linux环境中非常实用的工具,它们结合使用可以实现高效的数据处理和任务自动化。通过学习和掌握这两门技术,用户可以更好地管理和优化自己的系统。

    linux 文本扫描与处理--awk 使用手册

    1. 直接在命令行中使用awk,适合处理简单任务,或者在shell脚本中嵌入awk命令。 2. 通过-f选项指定包含awk程序的外部文件,这种方式更适合处理复杂任务,避免长命令行带来的困扰。 3. 利用命令解释器(如bash)调用...

    yinyuemi--awk初学之常见问题1

    - 使用`-v`选项:`awk -v var="$VAR" '{code}'`,将shell变量VAR的值赋给awk内部变量var。 - 直接在脚本中引用:`awk '{CODE}' "$VAR"{CODE}`,这种方式需要注意引号的正确使用,确保变量被正确解析。 推荐使用`-v`...

    linux-awk-完全手册范本.doc

    * shell script 程序中调用 awk 命令行或 awk 程序脚本 awk 的主要功能点是: * 样式扫描和处理 * 文本文件处理 * 数据处理和分析 * 文件处理和编辑 * shell script 程序中调用 awk 命令行或 awk 程序脚本 * 提供...

    UNIX命令及SHELL编程

    这是一套完整的Unix培训教材,包括Unix常用命令及SHELL编程基础与高级技巧,PDF格式,共30个文件。另有2个Word文档。包内文件清单如下: 01_Shell-文件安全与权限.PDF 02_Shell-使用find和xargs.PDF 03_Shell-...

    无涯教程(LearnFk)-Awk教程离线版.pdf

    AWK在很多方面与shell语言有相似之处,但同时它也拥有独特的语法和功能。 对于没有预装AWK的系统,可以通过高级包工具(APT)或YUM包管理器来安装AWK。在基于Debian的系统上,可以使用“sudo apt-get update”和...

    Shell脚本之awk篇

    Shell脚本之awk篇主要介绍了awk工具在Linux/Unix系统下进行文本和数据处理的应用。awk是一种编程语言,特别适合于对文本文件进行分析和处理,它可以读取标准输入、文件或管道中的数据。awk的名称来源于其创始人...

    linux-shell脚本命令:awk命令简介

    awk命令常用于在Linux shell脚本中进行数据提取、文本转换、数据报告生成等操作。本文将对awk命令的基本知识进行介绍,包括其工作原理、参数说明、内置变量、内置函数和使用示例。 首先,awk的工作流程可以从读取...

    shell awk实用实例教程

    在IT领域,Shell和Awk是两种非常强大的命令行工具,尤其在文本处理和数据分析方面。本教程将深入探讨这两个工具的结合使用,提供一系列实用的实例,帮助你提升工作效率。 **Shell** 是Unix和Linux操作系统中的命令...

    shell awk脚本总结.txt

    ### Shell Awk脚本知识点总结 #### 一、Shell与Awk在文本处理中的应用 在日常工作中,尤其是在技术支持领域,经常会遇到需要处理文本文件的情况。无论是哪种类型的数据库,最终都可以将其导出为文本格式,这为我们...

    三剑客-awk.txt

    awk基础

Global site tag (gtag.js) - Google Analytics