Linux awk命令 --三剑客老大
Linux awk命令 --三剑客老大
基本用法:
awk [参数] ['找谁{干啥}'] 文件
参数:
-F 分隔符
-v 创建或修改awk变量
OFS 输出分割符 awk显示每一列的时候分隔
'找谁{干啥}'
找谁==条件
比较表达式:
== 等于
>= 大于等于
<= 小于等于
> 大于
< 小于
注:如果列不止数字,想只比较数字的话。可以用+0方法。eg:'$5+0>10'
正则表达式:
~ 表示包含或匹配
示例:awk '$1~/\/dev\/sda1/{print $2,$NF}' df.txt
!~ 不包含或不匹配
正则
^ 是哪一列的开头
$ 是哪一列的结尾
范围:
‘NR==1,NR==5’ 第1行到第3行
'$3==0,$3==1000' 第3列等于0到第3列等于1000
'/那个字符/,/到那个字符/'
注:不贪婪匹配,但可以匹配多次
特殊:
&& 并且
|| 或者
BEGIN{} BEGIN 里面的内容会在awk读取文件之前执行
END{} awk读取文件内容之后执END内容
{干啥==动作}
默认 '{print $0}'
$0 显示整行
$num 显示第num列
$NF 显示最后一列
$(NF-1) 显示倒数第2列
NR 显示行号
gsub()
条件:gsub(/找谁/,"替换为",哪一列)
注:有两个动作以上,需要用;分割
例题:
1.显示/etc/passwd及行号
[root@maintain data]# awk -F':' '{print NR,$0}' /etc/passwd
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
mail:x:::mail:/var/spool/mail:/sbin/nologin
operator:x:::operator:/root:/sbin/nologin
games:x:::games:/usr/games:/sbin/nologin
ftp:x:::FTP User:/var/ftp:/sbin/nologin
nobody:x:::Nobody:/:/sbin/nologin
systemd-network:x:::systemd Network Management:/:/sbin/nologin
dbus:x:::System message bus:/:/sbin/nologin
polkitd:x:::User for polkitd:/:/sbin/nologin
sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x::::/var/spool/postfix:/sbin/nologin
ntp:x::::/etc/ntp:/sbin/nologin
2.显示/etc/passwd 第1列,第3列 倒数二列和最后一列
[root@maintain data]# awk -F':' '{print $1,$3,$(NF-1),$NF}' /etc/passwd
root /root /bin/bash
bin /bin /sbin/nologin
daemon /sbin /sbin/nologin
adm /var/adm /sbin/nologin
lp /var/spool/lpd /sbin/nologin
sync /sbin /bin/sync
shutdown /sbin /sbin/shutdown
halt /sbin /sbin/halt
mail /var/spool/mail /sbin/nologin
operator /root /sbin/nologin
games /usr/games /sbin/nologin
ftp /var/ftp /sbin/nologin
3.显示出/etc/passwd中 第3列大于80的行
条件:第3列大于80
$3>80
动作:不写(默认{print $0})
[root@maintain data]# awk -F':' '$3>80' /etc/passwd
nobody:x:::Nobody:/:/sbin/nologin
systemd-network:x:::systemd Network Management:/:/sbin/nologin
dbus:x:::System message bus:/:/sbin/nologin
polkitd:x:::User for polkitd:/:/sbin/nologin
postfix:x::::/var/spool/postfix:/sbin/nologin
4.显示磁盘使用率 大于10% 的磁盘分区和挂载点(目录)
条件:使用率大于10
$5>10
动作:显示磁盘分区和挂载点
print $1,$NF
[root@maintain data]# df | awk '$5+0>10'
/dev/sda2 10G .4G .7G % /
/dev/sda1 497M 117M 381M % /boot
5.创建一个test文本,包括以下内容:
Zhang Dandan 41117397 :250:100:175
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu waiwai 70271111 :250:80:75
Liu Bingbing 41117483 :250:100:175
Wang Xiaoai 3515064655 :50:95:135
Zi Gege 1986787350 :250:168:200
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918691635 :250:100:175
说明:第1列是姓,第2列是名字,第3列是ID,第4列是三次捐款
a.显示所有以一个D或X开头的人名全名
条件:名字以D或X开头
$2~/^[DX]/
动作:显示全名
print $1,$2
[root@maintain data]# awk '$2~/^[DX]/{print $1,$2}' reg.txt
Zhang Dandan
Zhang Xiaoyu
Wang Xiaoai
b.显示所有ID号码最后一位数字是1或5的人的全名
条件:ID号码最后一位数字是1或5
$3~/[15]$/
动作:显示全名
print $1,$2
[root@maintain data]# awk '$3~/[15]$/{print $1,$2}' reg.txt
[root@maintain data]# awk '$3~/(1|5)$/{print $1,$2}' reg.txt
[root@maintain data]# awk '$3~/1$|5$/{print $1,$2}' reg.txt
Zhang Xiaoyu
Wu waiwai
Wang Xiaoai
Li Youjiu
Lao Nanhai
c.显示Xiaoyu的捐款,每个值时都有以$开头,如$520$200$135
gsub(/找谁/,"替换为",哪一列)
条件:Xiaoyu的
$2~/Xiaoyu/
动作:捐款每个值以$开头
gsub(/:/,"$",$NF)
[root@maintain data]# awk '$2~/Xiaoai/{gsub(/:/,"$",$NF);print $0}' reg.txt
Wang Xiaoai $$$
d.显示所有人的全名,以姓,名的格式显示,如Meng,Feixue
条件:无
动作:姓与名有个,连接
','
[root@maintain data]# awk '{print $1","$2}' reg.txt #双引号,引住的就是原输出
[root@maintain data]# awk -v OFS=',' '{print $1,$2}' reg.txt #OFS 输出分割符 awk显示每一列的时候分隔符
Zhang,Dandan
Zhang,Xiaoyu
Meng,Feixue
Wu,waiwai
Liu,Bingbing
Wang,Xiaoai
Zi,Gege
Li,Youjiu
Lao,Nanhai
6.统计 /etc/services 文件中空行的数量
[root@maintain data]# awk '/^$/{i++}END{print i}' /etc/services
Linux awk命令 --三剑客老大的更多相关文章
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- Linux awk命令常见使用方法介绍
Linux awk命令常见使用方法介绍 By:授客 QQ:1033553122 awk运行方式有三种,其中常用的为命令行方式 awk [-F field_separator] '{patter ...
- linux awk命令详解,使用system来内嵌系统命令, awk合并两列
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- Linux——awk命令解析
awk简介 awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 的确拥有自己的语言: AWK 程 ...
- Linux awk命令详解??????????(研究)
http://blog.chinaunix.net/uid-25120309-id-3801250.html 一. AWK 说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行 ...
- Linux awk命令使用方法
awk是linux上非常好用的文本处理工具,常用于指定列的处理,包括获取指定列的内容.根据指定列匹配关系输出等文本处理.本文主要描述awk命令的基本语法.正则表达式与操作符的使用.常用内置变量的含义和 ...
- [转]Linux awk 命令 说明
From : http://blog.csdn.net/tianlesoftware/article/details/6278273 一. AWK 说明 awk是一种编程语言,用于在linux/un ...
- linux awk命令详解--转载
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理,然后输出 awk命令形式: awk [-F ...
- 转:Linux awk 命令 说明
一. AWK 说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是 ...
随机推荐
- Android中为TextView增加自定义的HTML标签
Android中的TextView,本身就支持部分的Html格式标签.这其中包括常用的字体大小颜色设置,文本链接等.使用起来也比较方便,只需要使用Html类转换一下即可.比如: textView.se ...
- pageoffice实现网页打开编辑保存word文档(基于SSM框架)
pageoffice是一款网页集成word.excel...等office工具 并不免费,但可以试用练习 SSM框架搭建过程就省略了 注意:由于谷歌/火狐升级,不支持插件嵌入,建议使用POBrowse ...
- vue中 key 值的作用
原文地址 我们知道,vue和react都实现了一套虚拟DOM,使我们可以不直接操作DOM元素,只操作数据便可以重新渲染页面.而隐藏在背后的原理便是其高效的Diff算法. vue和react的虚拟DOM ...
- 最近忙科研立项 & 对博客的优化
最近一直在忙科研立项.... 立项书 & 答辩 ... 接下来,将对博客进行优化... (1) 依据书来学习的[需要大量截图],将用微软的 OneNote 写笔记,然后打包成pdf,上传到我的 ...
- python列表展开的方法
只有一层嵌套的常见方法: # 普通方法 list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]] list_2 = [] for _ in list_1: list ...
- 深度学习之目标检测:非极大值抑制源码解析(nms)
目标检测:nms源码解析 原理:选定一个阈值,例如为0.3,然后将所有3个窗口(bounding box)按照得分由高到低排序.选中得分最高的窗口,遍历计算剩余的2窗口与该窗口的IOU,如果IOU大于 ...
- 【FFMPEG】ffmpeg 时间戳问题汇总
ffmpeg 时间戳问题汇总 http://www.cnblogs.com/loveclover/archive/2011/03/23/1993065.html 问题是这样的 用一个 VLC(流媒体客 ...
- ubuntu 16.04主题美化
目录 numix图标 Flatabulous主题 参考: Unity-tweak-tool插件 numix图标 sudo apt-add-repository ppa:numix/ppa sudo a ...
- libmkl 学习笔记
libmkl 学习笔记 1.libkml下载地址为: https://github.com/libkml/libkml/releases 这里下载1.3.0版本 2.编译与安装 mkdir build ...
- SQL2000中文版打不上SP4提示用户验证没有通过
https://jingyan.baidu.com/article/7f41ececf24841593d095cd8.html 解决方法: 在安装SQL Server SP4,有时候会出现:无论用wi ...