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/
posted @ 2021-08-09 14:10  HaimaBlog  阅读(33)  评论(0编辑  收藏  举报