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下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是 ...
随机推荐
- .NET开发辅助工具-ANTS Performance Profiler【转载】
https://blog.csdn.net/Eye_cng/article/details/50274109
- vs把asp.net旧的项目名称全部修改
1 先打开项目,把名称全部替换掉,然后把解决方案,程序集名称全部替换掉. 2 重新生成,清理,关闭项目. 3 把.sln文件用文本编辑器打开,替换里面的名称,然后把文件夹名称都修改好.d 4.打开项目 ...
- java数据结构之HashSet和TreeSet以及LinkedHashSet
一.HashSet源码注释 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cl ...
- SQL SERVER CLR Trigger功能
通过在 Microsoft SQL Server 中托管 CLR(称为 CLR 集成),开发人员可以在托管代码中编写存储过程.触发器.用户定义函数.用户定义类型和用户定义聚合函数, 改变了以前只能通过 ...
- Git安装以及配置SSH Key——Windows
安装 安装 Git 官网下载一个Windows版本的Git. 然后一直下一步即可,如下图 环境变量自动配好的,可以去检查一下环境变量中PATH中有没有Git的环境变量 然后在桌面右击鼠标,选择Git ...
- Django-Form组件-forms.Form
forms.Form 在之前的示例HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时很多时候都需要对用户的输入做校验,比如校验用 ...
- 学习笔记:html学习之一:html基本标记
1. 概论 一个完整的 HTML 文档必须包含 3 个部分: 一个由 元素定义的文档版本信息. 一个由 定义各项声明的文档头部, 作为各种声明信息的包含元素出现在文档的顶端,并且要先于 出现. 一个由 ...
- 【转帖】k8s-kubectl命令大全
https://www.cnblogs.com/fuyuteng/p/9458282.html 学习一下 Kubectl命令行管理对象 类型 命令 描述 基础命令 create 通过文件名或标准输入创 ...
- windows 安装jenkins
本文简单记录 windows 安装 jenkins. 1. 下载jenkins安装包,下载地址:https://jenkins.io/index.html 2. 选择下载windows版 3. 解压, ...
- 阿里云云计算ACP专业认证考试
阿里云云计算专业认证(Alibaba Cloud Certified Professional,ACP)是面向使用阿里云云计算产品的架构.开发.运维类人员的专业技术认证. 更多阿里云云计算ACP专业认 ...