linux命令之awk

简介

awk命令的名称是取自三位创始人Alfred Aho 、Peter Weinberger 和 Brian Kernighan姓名的首字母,awk有自己的程序设计语言,设计简短的程序,读入文件,数据排序,处理数据,生成报表等功能。

awk 通常用于文本处理和报表生成,最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。

awk 通常以文件的一行为处理单位的,awk每接收文件的一行,然后执行相应的命令,来处理文本,完整的awk脚本通常用来格式化文本文件中的信息

使用方式

            awk ‘{pattern + action}‘ {filenames}

pattern 表示 AWK 在数据中查找的内容,正则表达式,用斜杠括起来

action 是在找到匹配内容时所执行的一系列命令

花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组

使用说明

[[email protected] ~]$ awk ‘{print $0}‘ /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

依次对/etc/passwd 中的每一行执行 print 命令,所有输出都发送到 stdout,所得到的结果与执行 cat /etc/passwd 完全相同

$0 $n表示

-F参数:指定分隔符,可指定一个或多个

[email protected]:~# awk -F "/" -F ":" ‘{ print $1 " " $9 " " $0 }‘ /etc/passwd
root  root:x:0:0:root:/root:/bin/bash
daemon  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin  bin:x:2:2:bin:/bin:/bin/sh
sys  sys:x:3:3:sys:/dev:/bin/sh

只查看test.txt文件20-30行内容

[email protected]:~# awk ‘{if(NR>=20 && NR<=30) print $1}‘ test.txt
sock.close()
print(‘%s
break
elif
data
data
#print(data)
#print(clients)
#if
if
print(data)

BEGIN 和 END 模块

awk 在开始处理输入文件之前会执行 BEGIN 块,处理了输入文件中的所有行之后执行END块

统计/etc/passwd的账户人数

[email protected]:~# awk ‘{count++;print $0;} END{print "user count is ",count}‘ /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
.................
user count is  47

count是自定义变量,没有初始化默认是0,action{}中的多个语句用 ;隔开

[email protected]:~# awk ‘BEGIN {count=0;print "[start] user count is ",count} {count=count+1;print $0} END{print "[end] user count is ",count}‘ /etc/passwd
[start] user count is  0
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
.....................
[end] user count is  47

统计某个文件夹下的文件占用的字节数

[email protected]:~# ll |awk ‘BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size}‘
[end]size is  3090190

awk运算符

[email protected]:~# awk ‘BEGIN{a=5;a+=5;print a}‘
10

[email protected]:~# awk ‘BEGIN{a=1;b=2;print (a>2&&b>1,a=1||b>1)}‘
  0 1

[email protected]:~# awk ‘BEGIN{a=1;b=2;print (a>2&&b>1,a=1||b>1)}‘
0 1
[email protected]:~# awk ‘BEGIN{a="100testaa";if(a~/100/) {print "ok"}}‘
ok
[email protected]:~# echo|awk ‘BEGIN{a="100testaaa"}a~/test/{print "ok"}‘
ok
[email protected]:~# awk ‘BEGIN{a=11;if(a>=9){print "ok"}}‘
ok
[email protected]:~# awk ‘BEGIN{a;if(a>=b){print "ok"}}‘
ok
[email protected]
[email protected]:~# awk ‘BEGIN{a="b";print a=="b"?"ok":"err"}‘
ok
[email protected]:~# awk ‘BEGIN{a="b";print a=="c"?"ok":"err"}‘
err

awk内置变量

原文地址:https://www.cnblogs.com/hellohell/p/9063044.html

时间: 2024-10-02 00:39:53

linux命令之awk的相关文章

linux 命令之awk

awk 是一个强大的文本分析工具,把文件逐行的读入,以空格为默认分割符将每行切片,切开的部分再进行各种分析处理. awk命令形式: awk [-F | -f | -v] `BEGIN{} // {command1;command2;....;commandN} END{}` file [-F | -f | -v]   : 大参数,-F指定分隔符,-f调用脚本,-v定义变量 ` `  :  引用代码块 BEGIN : 初始化代码块,在对每一行进行处理之前,初始化代码,(在脚本中主要是引用全局变量,

Linux命令:awk简介

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. 备注:awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. 语法: awk [options] 'program' file file ... awk [options] 'PATTERN{action}' file

linux命令:awk文本处理命令

   awk命令简介: awk是一个强大的文本分析工具,通常,awk是以文件的每一行,为处理单位的.awk每接收文件的一行,然后执行相应的命令,来处理文本. 1.命令格式: awk 'pattern {action}' {filenames} 其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所 执行的一系列命令.花括号({})不需要在程序中始终出现,但它们用于根据特定的 模式对一系列指令进行分组. pattern就是要表示的正则表达式,用斜杠括起来.

Linux命令之awk数组使用范例

目录 取ifconfig bond0的IP地址    1 命令如下:    2 统计apache日志单IP访问请求数排名    2 第一种方法    2 第二种方法    2 统计域名访问量    3 第一种方法:    3 第二种方法:    3 计算每个人的总工资和平均工资    4 命令如下:    4 对本地IP和远程IP去重并统计重复数    4 命令如下:    5 统计源IP,端口及目的IP同时去重    6 命令如下:    6 美化效果如下:    7 取ifconfig bo

Linux命令之乐--awk

过滤出mysql的监听端口 netstat -lnt|grep 3306|awk -F '[ :]+' '{printf $5}'

linux命令之 awk, sed, scp

AWK是一种处理文本文件的语言,是一个强大的文本分析工具 简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. 使用方法 awk '{pattern + action}' {filenames} 显示最近登录的5个帐号 #last -n 5 | awk '{print $1}' details: http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

【每天一个linux命令】awk

awk:取出指定字符 #[-F ':'] 将查找出的内容以 : 为分割 #[{print $0}] 分割之后打印出第n个值($0 是所有) cat /etc/passwd |awk -F ':' '{print $0}' #[END{print $0}] 以空格分割,打印出最后一行所有值 cat awk.log |awk 'END{print $0}' #[BEGIN{print "begin"} {print $1 "," $7} END{print "

Linux 常用命令sed/awk/grep及正则表达式

linux命令sed和awk sed 主要功能 sed,stream editor.是一个"非交互式"字符流编辑器.输入流通过程序并输出到标准输出端. sed主要用来自动编辑一个或者多个文件(替换,插入,删除,追加,更改) 常见应用 抽区域 匹配正则表达式 比较域 增加,附加,替换 执行过程 sed一次处理一行或多行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区

Linux命令:cp、time、cut、awk 、获取文件大小命令

最近写了一个shell脚本,用到了cp.time.cut.awk命令,把他们的使用方法给写下来: 1.cp和mv cp命令:用来完成文件的复制,从源文件夹复制到目标文件夹.执行后源文件夹和目标文件夹均有源文件. mv 命令:用来移动文件.执行后,源文件夹中没有源文件.我经常用mv命令来重命名文件 注意:cp命令源文件夹与目标文件夹不能使同一个:而在mv中可以是同一个. 命令解析: #cp [-R] 源文件 目标文件夹 cp -R 参数 ---当复制整个文件夹时使用. #mv 源文件 目标文件夹