awk速查手册

awk速查手册

score.txt

cat score.txt
Marry   2143 78 84 77
Jack    2321 66 78 45
Tom     2122 48 77 71
Mike    2537 87 97 95
Bob     2415 40 57 62

netstat.txt

$cat netstat.txt
Proto Recv-Q Send-Q Local-Address          Foreign-Address             State
tcp        0      0 0.0.0.0:3306           0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:80             0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:9000         0.0.0.0:*                   LISTEN
tcp        0      0 coolshell.cn:80        124.205.5.146:18245         TIME_WAIT
tcp        0      0 coolshell.cn:80        61.140.101.185:37538        FIN_WAIT2
tcp        0      0 coolshell.cn:80        110.194.134.189:1032        ESTABLISHED
tcp        0      0 coolshell.cn:80        123.169.124.111:49809       ESTABLISHED
tcp        0      0 coolshell.cn:80        116.234.127.77:11502        FIN_WAIT2
tcp        0      0 coolshell.cn:80        123.169.124.111:49829       ESTABLISHED
tcp        0      0 coolshell.cn:80        183.60.215.36:36970         TIME_WAIT
tcp        0   4166 coolshell.cn:80        61.148.242.38:30901         ESTABLISHED
tcp        0      1 coolshell.cn:80        124.152.181.209:26825       FIN_WAIT1
tcp        0      0 coolshell.cn:80        110.194.134.189:4796        ESTABLISHED
tcp        0      0 coolshell.cn:80        183.60.212.163:51082        TIME_WAIT
tcp        0      1 coolshell.cn:80        208.115.113.92:50601        LAST_ACK
tcp        0      0 coolshell.cn:80        123.169.124.111:49840       ESTABLISHED
tcp        0      0 coolshell.cn:80        117.136.20.85:50025         FIN_WAIT2
tcp        0      0 :::22                  :::*                        LISTEN

1 输出

1.1 普通输出

输出第1,4列

head -4 netstat.txt | awk '{print $1, $4}'

格式化输出

head -4 netstat.txt | awk '{printf "%-8s %-8s %-8s %-18s %-22s %-15s\n",$1,$2,$3,$4,$5,$6}'

1.2 内建变量

变量 说明
$0 当前记录(这个变量中存放着整个行的内容)
$1~$n 当前记录的第n个字段,字段间由FS分隔
FS 输入字段分隔符 默认是空格或Tab
NF 当前记录中的字段个数,就是有多少列
NR 已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。
FNR 当前记录数,与NR不同的是,这个值会是各个文件自己的行号
RS 输入的记录分隔符, 默认为换行符
OFS 输出字段分隔符, 默认也是空格
ORS 输出的记录分隔符,默认为换行符
FILENAME 当前输入文件的名字

输出行号

head -4 netstat.txt | awk '{print NR, $3, $6}'

1.3 指定分隔符

输出用户名、uid和shell

awk -F: '{print $1, $3, $6}' OFS='\t' /etc/passwd
# 说明
# FS输入的分隔符
# OFS输出的分隔符

指定多个分隔符

-F '[:; ]+'
# +表示多个连在一起的分隔符算一个

2 应用场景

输出第3列为0且第6列为LISTEN的行且输出表头

awk '$3==0 && $6=="LISTEN" || NR==1 {printf "%-20s %-20s %s\n",$4,$5,$6}' netstat.txt

2.1 字符串匹配

awk '$6 ~ /LISTEN/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.t
awk '/LISTEN/' netstat.txt

# 说明
~表示模式开始
/FIN/表示模式

模式取反

awk '$6 !~ /WAIT/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt
awk '!/WAIT/' netstat.txt

# 说明
!表示取反

2.2 拆分文件

awk 'NR!=1{print > $6}' netstat.txt
awk 'NR!=1{print $4,$5 > $6}' netstat.txt

# 说明
如果第6列有3种值a,b,c就会生成3个文件,每个文件是对应的行的数据

2.3 统计

计算所有C文件,CPP文件和H文件的文件大小总和

ls -l  *.cpp *.c *.h | awk '{sum+=$5} END {print sum}'

统计第6列connection状态

awk 'NR!=1{a[$6]++;} END {for (i in a) print i ", " a[i];}' netstat.txt

统计每个用户的进程的占了多少内存

ps aux | awk 'NR!=1{a[$1]+=$6;} END { for(i in a) print i ", " a[i]"KB";}'

2.4 使用脚本

统计学生的总分与平均分

cal.awk

$ cat cal.awk
#!/bin/awk -f
#运行前
BEGIN {
    math = 0
    english = 0
    computer = 0

    printf "NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL\n"
    printf "---------------------------------------------\n"
}
#运行中
{
    math+=$3
    english+=$4
    computer+=$5
    printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5
}
#运行后
END {
    printf "---------------------------------------------\n"
    printf "  TOTAL:%10d %8d %8d \n", math, english, computer
    printf "AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR
}

执行awk脚本

awk -f cal.awk score.txt

2.5 与环境变量交互

x=5
y=10
export y
echo $x $y
awk -v val=$x '{print $1, $2, $3, $4+val, $5+ENVIRON["y"]}' OFS="\t" score.txt

2.6 几个花活

从file文件中找出长度大于80的行

awk 'length>80' file

按连接数查看客户端IP

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

打印99乘法表

seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'

参考

原文地址:https://www.cnblogs.com/okokabcd/p/8449896.html

时间: 2024-08-14 09:47:52

awk速查手册的相关文章

Linux/Unix 系统分析命令速查手册

1.Hardware CPU information: cat /proc/cpuinfo 物理core个数: 统计core 逻辑CPU个数:统计processor Memory information: free -m 其中-+buffer是针对OS/App来说的. Disk information: fdisk -l df -h IO 性能: iostat -d -x -k 1 10 此命令属于sysstat包 观察await 平均io operation等待时间 观察%util 一秒中IO

25个有用和方便的 WordPress 速查手册

如果你是一个 WordPress 编码器或开发人员,下载一些方便的 WordPress 备忘单寻找你的工作然后你在正确的地方.我们已经列出了25个有用的和方便的 WordPress 速查手册.WordPress 备忘单后将帮助你发展你的 WordPress 主题和插件以及这些有助于搜索引擎优化你的博客.享受! ! 1. WP-CheatSheet 2. Complete WordPress Cheat Sheet 3. Cheat Sheet SEO for WordPress 4. WordP

《zw版&#183;Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册

<zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对最常用的函数,做了中文说明,目前约250条,以后会逐步优化.增减. 目标是,类似常用英文单词500一样,做成<Halcon常用函数300条>.<halcon常用函数500条>等版本,方便大 家学习. 考虑到通用性,函数采用的是Halcon手册格式,没有转成delphi版,请大家注意.

R之data.table速查手册

R语言data.table速查手册 介绍 R中的data.table包提供了一个data.frame的高级版本,让你的程序做数据整型的运算速度大大的增加.data.table已经在金融,基因工程学等领域大放光彩.他尤其适合那些需要处理大型数据集(比如 1GB 到100GB)需要在内存中处理数据的人.不过这个包的一些符号并不是很容易掌握,因为这些操作方式在R中比较少见.这也是这篇文章的目的,为了给大家提供一个速查的手册. data.table的通用格式: DT[i, j, by],对于数据集DT,

Pandas速查手册中文版

本文翻译自文章: Pandas Cheat Sheet - Python for Data Science ,同时添加了部分注解. 对于数据科学家,无论是数据分析还是数据挖掘来说,Pandas是一个非常重要的Python包.它不仅提供了很多方法,使得数据处理非常简单,同时在数据处理速度上也做了很多优化,使得和Python内置方法相比时有了很大的优势. 如果你想学习Pandas,建议先看两个网站. (1)官网: Python Data Analysis Library (2)十分钟入门Pandas

HTML基础教程(17)——HTML 4.01速查手册

自 W3School 的 HTML 快速参考.可以打印它,以备日常使用. HTML Basic Document <html> <head> <title>Document name goes here</title> </head> <body> Visible text goes here </body> </html> Text Elements <p>This is a paragraph&

8086汇编指令速查手册

一.常用指令 二.算术运算指令 三.逻辑运算指令四.串指令 五.程序跳转指令------------------------------------------ 计算机寄存器分类简介: 32位CPU所含有的寄存器有:4个数据寄存器(EAX.EBX.ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1.数据寄存器数据寄存器主要用来保存操作数和运算结

几个较好的SQL速查手册网址

微软 SQL server 数据库开发手册 数据库设计 Transact-SQL 速查手册 数据库设计 MySQL 中文参考手册速查 结构化查询语言 SQL 学习手册速查 转自:http://www.cnblogs.com/yencain/articles/1313465.html

实用掌中宝--HTML&amp;CSS常用标签速查手册 PDF扫描版

实用掌中宝--HTML&CSS常用标签速查手册 内容推荐: 本书第一篇以语法和实例相结合的形式,详细讲解了HTML语言中各个元素及其属性的作用.语法和显示效果:第二篇从CSS基本概念开始,分别讲解了CSS基础知识.CSS控制各种元素显示的方法以及CSS布局页面的技巧等知识.为了使读者能尽快熟悉各种应用的具体方法,本书对所讲解的每个元素和属性都尽可能用简单直观的方法做了实例演示. 本书适合广大Web网站设计人员.网站设计的初学者.网站管理维护人员.大专院校学生和社会培训学员阅读,也可作为开发人员的