文档章节

awk应用场景之过滤举例

yysue
 yysue
发布于 06/14 20:34
字数 499
阅读 78
收藏 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
粉丝 27
博文 268
码字总数 155357
作品 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
3.3K
2

没有更多内容

加载失败,请刷新页面

加载更多

我是如何将博客转成PDF的

前言 只有光头才能变强 之前有读者问过我:“3y你的博客有没有电子版的呀?我想要份电子版的”。我说:“没有啊,我没有弄过电子版的,我这边有个文章导航页面,你可以去文章导航去找来看呀”...

Java3y
14分钟前
0
0
nginx的一些总结

Linux下安装Nginx完整教程及常见错误解决方案 1.Nginx安装环境 Nginx是C语言开发,建议在linux上运行,本教程使用Centos7.0作为安装环境. 1)gcc 安装nginx需要先将官网下载的源码进行编译,编译...

Yao--靠自己
21分钟前
0
0
Predicate函数式接口

Predicate接口主要用于流的筛选,比如在filter方法中传入Predicate判断。 作为函数式接口,这里居然有三个default方法,一个static方法,子孙满堂! 正统的接口方法,就是boolean test(T t)...

woshixin
22分钟前
0
0
sql 开窗函数

开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数...

hblt-j
33分钟前
1
0
使用Vue动态生成form表单的实例代码

具有数据收集、校验和提交功能的表单生成器,包含复选框、单选框、输入框、下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展。 欢迎大家s...

嫣然丫丫丫
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部