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就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
随机推荐
- js,正则实现金钱格式化
https://blog.csdn.net/qq_36279445/article/details/78889305 https://github.com/jawil/blog/issues/30
- php curl http digest
php用curl访问有http digest验证的网址时,不能直接加在URL上,例如: http://user:pass@xxx.xxx.xxx.xxx/index.php?a=1&b=2 这 ...
- webpack前置知识1(模块化开发)
webpack前置知识1(模块化开发) 新建 模板 小书匠 在开始对模块化开发进行讲解之前,我们需要有这么一个认识,即 在没有过多第三方干扰时,成本低收益高的事物更容易获得推广和信赖. 模块化开发就 ...
- Git-Runoob:Git 工作区、暂存区和版本库
ylbtech-Git-Runoob:Git 工作区.暂存区和版本库 1.返回顶部 1. Git 工作区.暂存区和版本库 基本概念 我们先来理解下Git 工作区.暂存区和版本库概念 工作区:就是你在电 ...
- hdu 6219 Empty Convex Polygons (凸包)
给你n个点,求面积最大的凸多边形,使得这个凸多边形没有内点. 考虑求凸包的graham算法,需要找到左下角的点,再进行极角排序后按顺序扫点,所以先枚举左下角的点. 这个过程中,如果遇到内点,就需要把这 ...
- oracle expdp/impdp/可传输表空间
oracle expdp/impdp/可传输表空间/及一些参数 Oracle data pump 导出操作能够将表.索引.约束.权限.PLSQL包.同义词等对象从数据库导出,并将它们保存在一种非文本格 ...
- Matlab——系统预定义的变量 常用数学函数
- 汇编语言——DOSBox 学习网址整理
汇编语言--使用DOSBox写一个HelloWorld https://blog.csdn.net/whatiwhere/article/details/8035910 windows下汇编工具--d ...
- 递归算法之Fibonacci 斐波那契数列第n个数的求解
Fibonacci 斐波那契数列第n个数的求解,也可以用递归和非递归的形式实现,具体如下,dart语言实现. int fibonacci(int n) { if (n <= 0) throw S ...
- 【VS开发】使用WinPcap编程(1)——获取网络设备信息
pcap_if_t是一个interface数据结构,表明网络接口的信息.网络接口就是interface,就是我们用来上网的设备,一般为网卡,还有一些虚拟网卡也算作这样的接口.它的结构如下: struc ...