awk命令详解_linux高级运维必会命令——AWK命令详解及实例分享

一、awk简介

awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。

awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言等。在 linux 系统日常处理工作中,发挥很重要的作用,掌握了 awk将会使你的工作变的高大上。 awk 是三剑客的老大,利剑出鞘,必会不同凡响。

二、语法详解

awk '{pattern + action}' {filenames}

尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。

awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。

通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。

三、awk 的原理

通过一个简短的命令,我们来了解其工作原理。

[root@Gin scripts]# awk '{print $0}' /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin..................................................... [root@Gin scripts]# echo hhh|awk '{print "hello,world"}'hello,world [root@Gin scripts]# awk '{print "hiya"}' /etc/passwdhiyahiyahiyahiya

上面在调用 awk时,我们指定/etc/passwd 作为输入文件。执行 awk 时,它依次对/etc/passwd 中的每一行执行 print 命令。

所有输出都发送到 stdout,所得到的结果与执行 cat /etc/passwd 完全相同。

现在,解释{ print }代码块。在 awk 中,花括号用于将几块代码组合到一起,这一点类似于 C 语言。在代码块中只有一条 print 命令。在 awk 中,如果只出现 print 命令,那么将打印当前行的全部内容。

再次说明, awk 对输入文件中的每一行都执行这个脚本。

f14094ec13b9d41332f525cc3c6c76bc.png
$ awk -F":" '{ print $1 }' /etc/passwd$ awk -F":" '{ print $1 $3 }' /etc/passwd$ awk -F":" '{ print $1 " " $3 }' /etc/passwd$ awk -F":" '{ print "username: " $1 "uid:" $3" }' /etc/passwd

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

print 后面做字符串的拼接


四、实例

下面通过实例来了解下awk的工作原理:

实例一:只查看test.txt文件(100行)内第20到第30行的内容(企业面试)

#print $a取列

#NR取行数

[root@Gin scripts]# awk '{if(NR>=20 && NR<=30) print $1}' test.txt 

实例二:已知test.txt文件内容为:

[root@Gin scripts]# cat test.txt

I am Poe,my qq is 33794712

请从该文件中过滤出'Poe'字符串与33794712,最后输出的结果为:Poe 33794712

[root@Gin scripts]# awk -F '[ ,]+' '{print $3" "$7}' test.txtPoe 33794712

上面是关于awk命令的相关用法,后面会分享更多linux方面内容,感兴趣的朋友可以关注下

72bd0eb80abc0699ae8e0add6207f9aa.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值