linux awk详解与应用

文章来自于本人个人博客:
linux awk详解与应用

1.awk

awk是一个强大的文本分析工具,它可以通过分析文本来生成一个数据报告。它的原理就是读取每行的输入,然后按照分隔符切分(默认是空格),再进行定制计算。

awk ‘{print $1}‘ /etc/passwd   #打印出passwd文件的所有行的第一列

这是awk的基础语法,在awk中$n代表列数,即$1--第一列,$2---第二列....,但是$0代表整行

接下来我们按照指定的分隔符打印数据:

awk -F ‘:‘ ‘{print $1}‘ /etc/passwd  #将每行按照冒号分隔,打印第一列

现在我们来用另外一种awk的写法打印上图的输出

cat /etc/passwd | awk -F ‘:‘ ‘{print $1}‘

awk有一些必须掌握的参数:

ARGC     命令行参数个数
ARGV     命令行参数排列
FILENAME AWK浏览文件的文件名
FNR      浏览文件的记录数
FS       设置输入域分隔符,跟-F一样
NF       域的索引,即列号
NR       awk读取的当前行号
OFS      输出域分隔符
ORS      输出记录分隔符
RS       控制记录分隔符

现在我们来打印第一列,当前行号,列号的值

cat /etc/passwd | awk ‘{print "cols:",$1," rowNumber:",NR," colNumber:",NF}‘

awk的语法结构为 awk ‘BEGIN{statements}  {statements}  END{statements}‘  其中在BEGIN中的语句是初始化一些变量或者打印一些初始数据的地方,在中间的{}中是进行一些逻辑运算的地方,在END{}中的语句是在计算完成输出之后需要追加的一些输出

cat /etc/passwd | awk ‘BEGIN{count=0} {count=count+1;print "count=",count} END{print "END",NR}‘

再来看看awk的for和while操作:

ls -l | awk ‘BEGIN {print user,time,row} {for(i =0; i< FNR;i++) {print $3,$7,NR}}‘  #按照总行数循环打印出第三列和第七列,还有行数

ls -l | awk ‘BEGIN{print "begin "} {print $0;count=0;while (count < 2) {print $9;count=count+1;} print "count=",count}‘

运用awk计算当前文件夹下文件的总大小

ls -l | awk ‘BEGIN{count=0} {count = count + $5;} END{print "total=",count}‘

awk的内置函数

数值计算函数:
cos(x)    余玄
sin(x)    正玄
exp(x)    x的冥
log(x)    x的对数
sqrt(x)   x的平方
int(x)    x转换为整数
rand()    返回任意数字n (0<n<1)

字符串函数:
sub(Ere,Repl,[In])      用Repl参数指定的字符串替换In参数指定的字符串中的由Ere参数指定的扩展正则表达式的第一个具体值
gsub(Ere,Repl,[In])     除了正则表达式所有值会被替代这点,它与sub是一样的行为
index(string1, string2) 返回string1中存在string2的位置
length([string])          返回字符串的长度,如果不加参数,则返回整个记录的长度
blength([string])       返回以字节为单位的字符串长度,其余等同于length
substr(string,M,[N])   返回以M处开始,N结束的子串,如果N为空,则返回从M到length()的子串
match(string,Ere)     如果字符串匹配正则表达式,则返回出现的位置,从1开始,如果没有,则返回0
split(string,A,[Ere])  将字符串按照分隔符分为A数组,如果不按照Ere正则分隔,则会以FS来分隔字符串
tolower(string)
toupper(string)

时间函数:
mktime(YYYY MM DD HH MM SS [DST])
strftime([format[,timestamp]]) 格式化时间
systime()  得到时间戳
ls -l | awk ‘{str=$9;print "before=",str; sub(/.py*/,"",str); print "after=",str}‘

ls -l | awk ‘{str=$9;print str; data=substr(str,0,index(str,"."));print data}‘  #substr函数去掉文件后缀名

linux awk详解与应用,布布扣,bubuko.com

时间: 2024-10-12 15:27:14

linux awk详解与应用的相关文章

linux awk详解

awk: awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑, awk在其对数据分析并生成报告时,显得尤为强大. 简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母. 实际上

linux sed&awk详解

sed sed为文本处理三剑客之一.本身就是一个管道命令,可以将文件进行增加,修改,删除,选取等操作. 格式:sed [-nrefi] [command] "文本字符串" 选项: -r: 支持扩展正则表达式: -n: 静默模式:(sed有个模式空间和保持空间,默认sed会将执行的结果保存到模式空间里面,而模式空间默认情况是输出在屏幕上,加了-n,则阻止将模式空间的内容输出到屏幕上) -f:/path/to/script_file:从指定的文件中读取脚本并运行 -e script1 -e

Linux procfs详解

1.0 proc文件系统总览在类Unix系统中体现了一种良好的抽象哲学,就是几乎所有的数据实体都被抽象成一个统一的接口--文件来看待,这样我们就可以用一些简单的基本工具完成大量复杂的操作.在Linux中存在着一类特殊的伪文件系统,用于使用与文件接口统一的操作来完成各种功能,例如ptyfs.devfs.sysfs和procfs.而procfs就是其中应用最广泛的一种伪文件系统.procfs是Linux内核信息的抽象文件接口,大量内核中的信息以及可调参数都被作为常规文件映射到一个目录树中,这样我们就

linux命令详解(2)

linux命令详解(2) 查看文件.内容处理命令 cat:查看文件 格式: cat 文件名 选项: -n:输出行号 例子:查看/etc/passwd文件 [[email protected] ~]# cat /etc/passwd tac:查看文件,反向显示文件内容 格式: tac 文件名 more:分页显示文件内容 格式: more 文件名 q结束查询 less:分页显示文件内容 格式: less 文件名 q结束查询 head:显示文件内容头部(默认前十行) 格式: head 文件名 选项:

Linux 目录详解 树状目录结构图

1.树状目录结构图 2./目录 目录 描述 / 第一层次结构的根.整个文件系统层次结构的根目录. /bin/ 需要在单用户模式可用的必要命令(可执行文件):面向所有用户,例如:cat.ls.cp,和/usr/bin类似. /boot/ 引导程序文件,例如:kernel.initrd:时常是一个单独的分区[6] /dev/ 必要设备, 例如:, /dev/null. /etc/ 特定主机,系统范围内的配置文件. 关于这个名称目前有争议.在贝尔实验室关于UNIX实现文档的早期版本中,/etc 被称为

Linux信号详解

Linux信号详解 一 信号的种类 可靠信号与不可靠信号, 实时信号与非实时信号 可靠信号就是实时信号, 那些从UNIX系统继承过来的信号都是非可靠信号, 表现在信号 不支持排队,信号可能会丢失, 比如发送多次相同的信号, 进程只能收到一次. 信号值小于 SIGRTMIN的都是非可靠信号. 非可靠信号就是非实时信号, 后来, Linux改进了信号机制, 增加了32种新的信号, 这些信 号都是可靠信号, 表现在信号支持排队, 不会丢失, 发多少次, 就可以收到多少次. 信号值 位于 [SIGRTM

Gentoo Linux安装详解--根据官方WiKi整理

1. 前期准备 远程登录: 开启ssh服务: /etc/init.d/sshd start 设置密码: passwd 以便使用putty.ssh client远程登录上传stage等(有时在线下载很慢,而局域网上传很快) 准备磁盘: 分区: fdisk /dev/sda /dev/sda1 : /boot 100M(32-100M) 设启动笔记-a/dev/sda2 : / 20G/dev/sda3 : /home 20G/dev/sda5 : /swap 1G (内存< 512 MB,分区分配

linux命令详解

一.cat主要有三大功能: 1.一次显示整个文件.$ cat filename2.从键盘创建一个文件.$ cat > filename (只能创建新文件,不能编辑已有文件)3.将几个文件合并为一个文件: $cat file1 file2 > file 参数:-n 或 --number 由 1 开始对所有输出的行数编号-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行-v

PXE的概述及Linux使用详解

PXE的概述及使用详解 现在企业采购的很多计算机都是没光驱的,怎么安装系统呢?另外,如何能快速大规模安装Linux服务器操作系统呢,有什么好办法吗? 答案是有的,那就是本文要说的:PXE PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial filet