今天给各位分享Linux三剑客awk命令原理及基本命令的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
Awk 是一种文本处理工具,也是Linux 和Unix 环境中最强大的数据处理引擎之一。
awk 生成的新版本nawk 和gawk 已得到改进。现在Linux系统下日常使用的是gawk的默认版本。
如下图:
awk 提供了极其强大的功能:样式加载、流程控制、数学运算符、过程控制语句甚至内置变量和函数。它几乎具备了完整语言所应具备的所有美好特性。简而言之,awk 在很多方面类似于shell 编程语言。
总结:
awk不仅是Linux系统中的一个命令,也是一种可以用来处理数据、生成报告(excel)的编程语言。处理的数据可以是一个或多个文件,这些文件可以来自标准输入,也可以通过管道获取标准输入。 awk可以直接在命令行编辑命令来进行操作,也可以将其编写为awk程序以用于更复杂的应用。
2、执行过程:
与sed 命令类似,它逐行读取并处理.
这里与sed命令进行比较进行分析。
sed如下所示:
sed 从文件或管道中读取一行,处理一行,并输出一行;读取另一行,处理另一行,并输出另一行.
当处理一行时,当前处理的行被存储在一个临时缓冲区中,称为模式空间,然后使用sed 命令来处理缓冲区的内容。处理完成后,将缓冲区的内容发送到屏幕。然后处理下一行,并重复直到文件末尾。
差异:
awk 会将一行分成几个字段进行处理,而不是像sed 那样处理整行。
示意图:
补充:
上图中默认分隔符为空白,即:空格或制表符。
3.语法格式:
(1)awk完整语法
开始{命令}:
处理数据之前执行的命令。
处理数据后执行的命令。
这两个命令可以省略。参见(2)
(2)awk基本语法
awk -F ‘分隔符’ ‘/mode/{action}’ 文件
这里的“/mode/{action}”是不是有点类似于sed命令格式?
注:
1. 指令使用”
2. 在操作中使用{}
3. 模式:
(1)正则表达式(注意格式:/正则表达式/)
(2) 条件表达式(例如:etc.)
总结:
一般来说,这里的模式是用来找人的,而action则表示要做什么。
例如:总共3个橙子、2个柚子、1个葡萄。
假设你现在想吃葡萄。
模式可以代表/grape/,动作可以代表{eat}。
4. 案例1
猫演示.txt
橘子橘子橘子油子油子葡萄
//执行BEGIN命令
开始寻找葡萄.
//对与模式匹配的行执行的操作
吃它
结束我明白了.
案例2:
接下来我们获取文件的第一个字段和最后一个字段
1. //只有动作,没有模式
awk -F ‘:’ ‘{print $1,$7}’ /etc/passwd
补充:
//下期介绍内部变量后,可以使用以下方法
awk -F ‘:’ ‘{print $1,$NF}’ /etc/passwd
2.获取特定用户的登录shell
//既有模式又有动作
odysee:~/shellFiles_1$awk -F ‘:’ ‘/^odysee/{print $1,$7}’ /etc/passwd
odysee1 /bin/bash
奥德赛/bin/bash
以奥德赛为例
3. 唯一模式
awk -F ‘:’ ‘/^odysee/’ /etc/passwd
这与grep 类似,显示$0 正行数据。
下一篇:
Linux 三剑客awk 命令第2 部分命令操作符
欢迎大家提出宝贵的意见或建议。
欢迎补充或者分享一些其他的方法。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/204923.html
用户评论
代价是折磨╳
刚学习LINUX不久,一直在想怎么搞懂这个叫做“三剑客”的东西,终于找到这篇文章解释了!awk真是太神奇了,能解析文本成表格,而且还很强大。赶紧找个练习题试试看。
有14位网友表示赞同!
墨染天下
以前只知道awk可以看数据,没想到原理居然和正则表达式有关!这篇讲解通俗易懂,配上代码示例非常生动形象,让我对awk的用法有了更清晰的理解。以后脚本写多了试试用这个三剑客辅助一下。
有19位网友表示赞同!
非想
Linux系统里,命令那么多,awk这三个小家伙居然还能这么厉害!原来是通过匹配文本来提取信息啊,比以往那些纯逻辑处理的方式要灵活得多
有19位网友表示赞同!
颓废人士
看了这个文章后我感觉自己离 “linux高手” 还差一大截… awk的确强大,需要好好深入学习一下了。这篇博文讲解还是蛮清晰的,帮助了我很多。
有15位网友表示赞同!
发型不乱一切好办
我觉得这个标题写得有点太武,就三剑客就能概括所有?Linux上还有好多强大的命令和工具呢!不过本文确实介绍了awk的基本用法,对于初学者来说还是可以参考一下
有14位网友表示赞同!
闲肆
这种解析文本的模式的确很有用,而且awk脚本还可以结合shell脚本一起使用,扩展应用场景。这篇文章写的很详细,把awk的基础语法都整理了一边。
有19位网友表示赞同!
失心疯i
想用awk去解决一些复杂的文件处理问题,但看了这篇文章后还是一头雾水。感觉文档有点过于简洁,没有针对具体的场景进行详细的案例讲解,对实际操作帮助不大
有10位网友表示赞同!
最怕挣扎
这个"三剑客"的title 还是挺吸引人的!文章内容也很实用,把awk的基本用法和原理都解释了,比我之前瞎摸索要高效多了。感谢作者分享!学习Linux真的离不开这种精辟的博客讲解。
有10位网友表示赞同!
百合的盛世恋
说实话,awk命令虽然强大但确实不怎么人性化。这篇文章介绍得挺好,至少明白它的一些工作原理,以后遇到需要批量处理文本的时候 再看看这个文章再试试。
有16位网友表示赞同!
江山策
Linux系统真是太复杂了,一个awk就足够我头疼一天了! 这篇文章讲解得很详细,把我对 awk 的一些基本概念搞明白了,希望以后能深入学习它的高级用法
有13位网友表示赞同!
夏日倾情
我觉得学习awk命令最关键的一点是理解其内部的正则表达式,这篇文章讲得比较清晰,配上代码示例更容易理解。但希望作者能多添加一些实际应用场景的案例讲解,更直观地说明awk的使用方法。
有7位网友表示赞同!
嘲笑!
这篇博客对我提升 Linux 技能很有帮助!终于搞明白了 awk 的原理:利用正则表达式来匹配和处理文本内容,还真是一个强大的工具。我以后肯定会经常用到它的!
有13位网友表示赞同!
来自火星的我
想用awk 处理一下我这个项目的数据文件,现在看来需要好好研究一下这篇文章里的讲解了。学习linux命令总感觉有点慢,不过一步一个脚印,相信总能搞定。
有13位网友表示赞同!
像从了良
这篇博客写得不错,把 awk 的原理和基本命令都解释得很清楚,适合初学者学习使用。不过我建议作者可以加入更多的实战案例,让读者更直观地理解到 awk 的应用场景。
有12位网友表示赞同!