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/