文档章节

awk应用场景之过滤举例

yysue
 yysue
发布于 06/14 20:34
字数 499
阅读 42
收藏 1

以/etc/passwd举例,passwd文本

[root@196 tmp]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...

关于passwd

  • 用户名(login_name)

  • 口令(passwd)

  • 用户标识号(UID)

  • 组标识号(GID)

  • 注释性描述(users)

  • 主目录(home_directory)

  • 登录Shell(Shell)

过滤行首或行尾

# 以nologin结尾
awk -F: '/nologin$/ {print $1,$NF}' /etc/passwd

# 不以nologin结尾
awk -F: '!/nologin$/ {print $1,$NF}' /etc/passwd 

# 以tom或my开头的行
awk '/^(tom|my)/' /etc/passwd

对某一列或整行进行关键字过滤

# uid列包含3
awk -F: '$3~3 {print $1,$3,$NF}' /etc/passwd

# uid列等于1
awk -F: '$3==1' /etc/passwd

# 包含systemd-n或systemd-b的行
# []匹配[]内字符集合中的一个,如[123abc]只能匹配123abc中的一个字符
awk '/systemd-[nb]/' /etc/passwd

# 包含tomcat和mysql的行
awk -F: '/tomcat|mysql/' /etc/passwd
# 只对第一列进行过滤
awk -F: '$1 ~ /tomcat|mysql/' /etc/passwd

# 不包含tomcat和mysql的行
awk -F: '!/tomcat|mysql/ || NR==1' /etc/passwd
# 只对第一列进行过滤
awk -F: '$1 !~ /tomcat|mysql/ || NR==1' /etc/passwd

输出某一范围内的行

# 输出第一次匹配行首为tomcat行 到 第一次匹配行首为ntp的行之间的行,也包括被匹配的行
awk -F: '/^tomcat/,/^ntp/ {print NR, $0}' /etc/passwd

# 输出从n行到m行
awk -F: 'NR>=3 && NR<=10 {print NR, $0}' /etc/passwd

其他场景

比如一个文件有m列,但我只想输出n列,n <= m,怎么弄?

http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4096433

echo "aaa bbb ccc ddd" |awk '{NF-=2}1'
aaa bbb

# 补充一下输出2到n列
awk -F: 'BEGIN{n=4}{for(i=2;i<n;i++)printf $i":";print $i}' /etc/passwd

[seesea@UC ~]$ cat file
1       2       3       4
a       b       c       d
x       y       z       .
[seesea@UC ~]$ cut -f 2- file
2       3       4
b       c       d
y       z       .
[seesea@UC ~]$ cut -f 3- file 
3       4
c       d
z       .
[seesea@UC ~]$ cut -f 4- file 
4
d
.

显示ps aux命令执行时,当前系统上其VSZ(虚拟内存集)大于10000的进程及其PID

ps aux|awk '!/^USER/ {if($5>10000) {printf $2"------"; for(i=11;i<=NF;i++) printf $i"";print ""}}'

© 著作权归作者所有

共有 人打赏支持
yysue
粉丝 25
博文 253
码字总数 148714
作品 0
济南
程序员
shell学习之正则表达式【基础篇】

什么是正则表达式: 是你定义的、linux工具用来过滤文本的模式模板。Linux工具(比如sed编辑器或gawk)能够在数据流向工具时对数据进行正则表达式模式匹配。如果数据匹配模式,它就会被接受并...

白羊IT
2017/04/15
0
0
Kali 渗透测试技术 穿梭网络间的信使

What is Kali Kali Linux是一个基于Debian的Linux发行版,旨在实现高级渗透测试和安全审计。Kali包含数百个工具,面向各种信息安全任务,如渗透测试,安全研究,计算机取证和逆向工程。Kali ...

语落心生
2017/11/22
0
0
shell命令获取手机上所有通知信息

获取手机上所有通知信息 grep 'tickerText' awk -F '=' '{print $2}' grep -v 'null' 李天一提前6年出狱?官方回应我就吃个桃子怎么感觉后背发凉就跟我入个镜这么难吗?😂USB 已连接 (文件...

迈阿密小白
07/19
0
0
如何使用 awk 和正则表达式过滤文本或文件中的字符串

当我们在 Unix/Linux 下使用特定的命令从字符串或文件中读取或编辑文本时,我们经常需要过滤输出以得到感兴趣的部分。这时正则表达式就派上用场了。 什么是正则表达式? 正则表达式可以定义为...

开元中国2015
2016/07/19
48
0
美团点评开源 MySQL 极速闪回工具 MyFlash

MyFlash 是由美团点评公司技术工程部开发维护且内部使用的一个回滚 DML 操作的工具,旨在方便且高效地进行数据恢复,已于近日宣布开源。该工具通过解析 v4 版本的 binlog ,完成回滚操作。相...

王练
2017/11/25
2.8K
2

没有更多内容

加载失败,请刷新页面

加载更多

SSO单点登录PHP简单版

  前面做了一个新项目,需要用户资源可以需要共享。由于之前没有做过这样的东西,回家之后,立马网站百度“单点登录”。帖子很多,甄别之后,这里列几篇认为比较有营养。   http://blog...

slagga
33分钟前
1
0
Java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。 本文参考java 泛型详解、Java中的泛型方法、 java泛型详解 1 概述 泛型在j...

hensemlee
37分钟前
1
0
Annotation注解详细介绍

目录介绍 1.Annotation库的简单介绍 2.@Nullable和@NonNull 3.资源类型注释 4.类型定义注释 5.线程注释 6.RGB颜色纸注释 7.值范围注释 8.权限注释 9.重写函数注释 10.返回值注释 11.@Keep注释...

潇湘剑雨
39分钟前
1
0
一步步编写自己的PHP爬取代理IP项目(二)

这一章节我们正式开展我们的爬虫项目,首先我们先要知道哪个网站能获取到免费代理IP,目前比较火的有西刺代理,快代理等,这里我们拿西刺代理作为例子。 这里就是一个个免费的IP地址以及各自...

NateHuang
58分钟前
2
0
11-利用思维导图梳理JavaSE-Java的反射机制

11-利用思维导图梳理JavaSE-Java的反射机制 主要内容 1.反射与Class类 1.1.反射概念 1.2.Class类 1.3.实例化Class类 1.4.反射的作用 1.5.Class对象的作用 2.反射的深入应用 2.1.调用无参的成...

飞鱼说编程
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部