Linux:“awk”命令的妙用
介绍:
- awk是一个非常强大的文本分析工具。
- 相对于grep查找,sed编辑,awk在其对数据分析并生成报告时,显得尤为强大。
- 简单来说awk主是把文件逐行的读入,(空格,制表符)为默认分隔符,将每行切片,切开的部分再进行各种分析处理。
解释
awk -F 'pattern + action' {filenames}
- 支持自定义分隔符
- 支持正则表达式匹配
- 支持自定义变量、数组 a[1] a[tom] map(key)
- 支持内置变量
FILENAMEawk浏览的文件名
FS设置输入字段分隔符,等价于命令行-F选项
NF 浏览记录的字段个数
NR 已读的记录数
shell读取用户输入的字符串发现|
,代表有管道。|
左右被理解为简单命令,即前一个(左边)简单命令的标准输出指向后一个(右边)标准命令的标准输入
awk会根据分隔符将行分成若干个字段,$0为整行,$1为第一个字段,$2 为第2个地段,依此类推…
应用场景:
为打印一个字段或所有字段,使用print命令。这是一个awk动作
echo "this is a test" | awk '{ print $1 }'
**输出为 **
this
echo "this is a test" | awk '{ print $1, $2 }'
输出为
this is
/etc/passwd的文件内容如下
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
举几个简单的小需求
1、只显示/etc/passwd的账户
awk -F : '{ print $1 }' /etc/passwd
输出为
root
bin
daemon
adm
lp
可以把流程控制语句放到一个脚本中,然后调用脚本执行,如test.sh的内容如下*
更多详情笔记:
https://www.linuxprobe.com/linux-awk-clever.html
学习视频
https://www.bilibili.com/video/BV1kv411k7ib?p=2&spm_id_from=pageDriver
[Haima的博客]
http://www.cnblogs.com/haima/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构