003-awk 命令使用
awk 命令使用 截取符合条件的列 awk 先读取第一行后,再去处理数据 例子:
cut 不能截取分隔符为空格,tab之类的文件或字符串,但awk可以
[root@zabbix lianxi]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G .5G 16G % /
devtmpfs .9G .9G % /dev
tmpfs .9G .9G % /dev/shm
tmpfs .9G 12M .9G % /run
tmpfs .9G .9G % /sys/fs/cgroup
/dev/sda1 1014M 189M 826M % /boot
tmpfs 378M 378M % /run/user/ [root@zabbix lianxi]# df -h | cut -d " " -f [root@zabbix lianxi]#
[root@zabbix lianxi]# awk '{printf $2 "\t" $6}' student.txt
Name AverageLiming .66Sc .66Gao 91.66[root@zabbix lianxi]# awk '{printf $2 "\t" $6\n}' student.txt
awk: cmd. line:: {printf $ "\t" $\n}
awk: cmd. line:: ^ backslash not last character on line
awk: cmd. line:: {printf $ "\t" $\n}
awk: cmd. line:: ^ syntax error
[root@zabbix lianxi]# awk '{printf $2 "\t" $6 "\n"}' student.txt
Name Average
Liming 87.66
Sc 85.66
Gao 91.66 ##############################################################################
解释:$ $ 代表文件的第2列和第6列,awk先读取文件的一行,并判断条件提取符合条件的信息,再读取下一行提取
$ 代表整行 [root@zabbix lianxi]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G .5G 16G % /
devtmpfs .9G .9G % /dev
tmpfs .9G .9G % /dev/shm
tmpfs .9G 12M .9G % /run
tmpfs .9G .9G % /sys/fs/cgroup
/dev/sda1 1014M 189M 826M % /boot
tmpfs 378M 378M % /run/user/
[root@zabbix lianxi]# df -h | awk '{printf $6 "\t" $2 "\n"}'
挂载点 容量
/ 17G
/dev .9G
/dev/shm .9G
/run .9G
/sys/fs/cgroup .9G
/boot 1014M
/run/user/ 378M [root@zabbix lianxi]# df -h | awk '{print $6 "\t" $2}'
挂载点 容量
/ 17G
/dev .9G
/dev/shm .9G
/run .9G
/sys/fs/cgroup .9G
/boot 1014M
/run/user/ 378M ############################################
print与printf的区别
print 默认行尾自动添加换行符,printf需要手动添加 [root@zabbix lianxi]# df -h | grep sda1
/dev/sda1 1014M 189M 826M % /boot
[root@zabbix lianxi]# df -h | grep sda1 | awk '{print $5}' | cut -d "%" -f ##################################
BEGIN [root@zabbix lianxi]# awk 'BEGIN {print "这是一个测试脚本"} {print $2 "\t" $6}' student.txt
这是一个测试脚本
Name Average
Liming 87.66
Sc 85.66
Gao 91.66 解释:只有满足了条件才能执行后面,也就是说先执行BEGIN语句后,再处理后面的数据。 ############################################
FS 内置变量
作用:指定分隔符 [root@zabbix lianxi]# awk '{FS=":"} {print $1 "\t" $3}' /etc/passwd
root:x:::root:/root:/bin/bash
bin
daemon
adm
lp
sync
shutdown
halt
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix
chrony
apache
zabbix
mysql
user1
user2
user3 为什么第一行没有过滤?
因为:awk 先读取第一行后,再去处理数据
解决办法:再分隔符前添加BEGIN,这样先执行分隔符后,再读取第一行,并执行数据处理
注意:手工添加分隔符必须添加BEGIN [root@zabbix lianxi]# awk 'BEGIN {FS=":"} {print $1 "\t" $3}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix
chrony
apache
zabbix
mysql
user1
user2
user3
[root@zabbix lianxi]# [root@zabbix lianxi]# awk 'BEGIN {FS=":"} {print $1 "\t" $3} END {print "aaaaaaaaa"}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix
chrony
apache
zabbix
mysql
user1
user2
user3
aaaaaaaaa [root@zabbix lianxi]# awk 'BEGIN {print "开始执行"} BEGIN {FS=":"} {print $1 "\t" $3} END {print "结束了"}' /etc/passwd
开始执行
root
bin
daemon
adm
lp
sync
shutdown
halt
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix
chrony
apache
zabbix
mysql
user1
user2
user3
结束了 ###################################################################
关系运算符 [root@zabbix lianxi]# cat student.txt | grep -v Name
Liming 87.66
Sc 85.66
Gao 91.66
[root@zabbix lianxi]# cat student.txt | grep -v Name | awk '$6 >=86 {print $2}'
Liming
Gao 解释:查看student.txt 文件,取出不含Name的行,如果第6列的数据大于等于86,则打印第2列数据
003-awk 命令使用的更多相关文章
- 使用 awk 命令统计文本
2022-04-19 11:25:15.008,b4d13bfca8fe4b93a85e65a88520d945,LogScheduler#printLog,10ms,Y,xxxxxxxx 2022- ...
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- awk命令详解
搜索 纠正错误 添加实例 awk 文本和数据进行处理的编程语言 补充说明 awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件 ...
- Linux安全基础:awk命令的使用
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- AWK命令学习
使用方法 awk 'pattern {action}' {filenames} 尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到 ...
- awk 命令
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- AWK命令的用法
1.awk命令简介: awk是一种可以处理数据.产生格式化报表的语言,功能十分强大. awk的工作方式是读取数据,将每一行数据视为一条记录(record)每笔记录以字段分隔符分成若干字段,然后输出各个 ...
- [Linux] linux awk命令详解
reference : http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 简介 awk是一个强大的文本分析工具,相对于g ...
- awk命令简单介绍
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- Linux的awk命令
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
随机推荐
- Oracle JET Router 与 Module 数据传递
Oracle JET 组件间数据传递方法. 路由:父路由:customers Router 子路由: cust Router 这里 Router 和 module 结合使用. customer 包括 ...
- CentOS7配置静态IP中NM_CONTROLLED不要设置为NO
这个是网络管理的,之前一直是把这个选项设置为NO,然后在CentOS其中,每次重启网络服务都会失败,后来把这个设为YES就可以了.
- MYSQL启用数据库错误:ERROR 2002 (HY000)
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) MYSQL服务 ...
- 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第1节 基本概念_03maven一键构建概念
资料里面写好的Helloworld项目 pom.xml存放jar包的坐标 首先复制项目所在的目录的路径: 先进去复制的这个路径,然后又输入了d盘.这时候就进去到这个项目目录了. 这个项目就运行起来了. ...
- Eclipse 添加 UML Model插件
1.下载安装 ModelGson 下载链接:https://pan.baidu.com/s/1smIZApv 密码:mu5l eclipse安装ModelGson(注意不用解压ModelGson, ...
- linux下搭建mysql数据库
linux下搭建mysql数据库 1.下载mysql: http://dev.mysql.com/downloads/mysql/5.6.html#downloads wget http://dev. ...
- 【ABAP系列】SAP ABAP 的替代和校验
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 的替代和校验 ...
- 【Linux开发】CCS远程调试ARM,AM4378
注意一点:CCS也是安装在Linux主机上的,不是安装在Windows上的,我在Windows上做出了很多尝试,但最终也不没明白究竟要用怎样的格式去执行在ARM-Linux应用程序,out文件ELF可 ...
- Kibana开启中文语言
Kibana在6.7以后的版本,支持了多种语言.并且自带在安装包里. 开启方式: 找到Kibana配置文件所在:config/kibana.yml找到配置:i18n.locale: "en& ...
- 红帽学习笔记[RHCSA] 第四课[用户相关、破解root密码]
第四课 关于Linux 的用户 用户分类: # UID 是用户ID UID 0分配给超级用户(root) UID 1-200 是一系列的 系统用户 静态分配给红帽的系统进程 UID 201 ...