`
唐美好
  • 浏览: 44471 次
  • 性别: Icon_minigender_1
  • 来自: 湖南永州
社区版块
存档分类
最新评论

Linux awk工具使用详解

阅读更多
                             AWK用法
一、知识点一
1、域分割 -F 确定分割符 如果不加-F 默认以空格分割符
cat /etc/passwd | awk -F: '{print $1,$2,$3}'

2、抽取域
cat /etc/passwd | awk -F: '{print $1}'

3、$0代表全局域,也就是所有的记录
cat /etc/passwd | awk -F: '{print $0}'

4、单独打印记录
cat /etc/passwd | awk -F: '{print $1,$4}'

5、打印报告头
# cat /etc/passwd | awk -F: 'BEGIN{print "This is system user"}{print $1}' | more

6、打印信息尾
# cat /etc/passwd | awk -F: 'BEGIN{print "This is system user"}{print $1}
END{print "==================="}'

二、知识点二
awk正则表达式
(1) ~匹配
cat /etc/passwd | awk '{if($0~/root/) print $0}'

(2) 精确匹配
cat /etc/passwd | awk -F: '{if($1~/root/) print $1}'

(3) 不匹配!
cat /etc/passwd | awk '$0 !~/root/'
cat /etc/passwd | awk -F: '{if($1~/root/)print $1}'

(4) 小于
cat /etc/passwd |awk -F: '{if($3<200)print $3}'

(5) 小于或者等于
cat /etc/passwd | awk -F: '{if($3<=200)print $3}'

(6) 大于或者等于
cat /etc/passwd | awk -F: '{if($3>=200)print $3}'

(7) 匹配多个关键字
cat /etc/passwd | awk -F: '$1~/(root|user)/'

(8) 匹配行首
cat /etc/passwd | awk -F: '$1~/^root/'

(9) awk 使用&& ||
条件1为真&&则条件二执行
条件1为真|| 则条件二不执行


cat /etc/passwd | awk -F: '{if($1=="root" && $5=="root")print $0}'
cat /etc/passwd | awk -F: '{if($1=="root" || $1=="sdfsfsdsdsd") print $0}'

awk NF 和NR
NF 浏览记录域的个数
NR 已读的记录数
cat /etc/passwd | awk -F: '{print NF}'
cat /etc/passwd | awk -F: '{print $1,NR}'
cat /etc/passwd | awk -F: '{if(NR<10 && $1~/root/)print $1}'

awk 替换
gsub(r,s)
cat /etc/passwd | awk -F: 'gsub(/root/,"alvinzeng"){print $0}'



本章练习题:
1 awk 默认以什么为分割符?
:默认以空格符为分隔符
2 抽取/etc/passwd 第一个域和第5个域并且统计他们的行号
:cat /etc/passwd | awk -F: 'BEGIN{i=0}{i++}{print i, $1,$5}'
  cat -n  /etc/passwd | awk -F: '{print $1"=="$5}'
3 抽取第一个域,并且进行root匹配,然后打印出报告头内容为"This is user"
:cat /etc/passwd | awk -F: 'BEGIN{print "This is user:"}{if($1~"root")print $1}'
4 抽取最后一个域,尾部信息用“########”分割
:cat /etc/passwd | awk -F: '{print $NF}END{print "#######"}'
5 请抽取第一个域,请且匹配以user开头的关键字
:cat /etc/passwd | awk -F: '{if($0~"^user")print $1}'
6 匹配全局域带有[0-9]的关键字的域信息
:cat /etc/passwd | awk -F: '{if($0~"[0-9]")print $0}'
7 请打印出来行后大于30 并且匹配第一个域为mysql的信息条目
:cat /etc/passwd | awk -F: 'NR>=30{if($1~"mysql")print $1}'
8 请打印出/etc/passwd 里面最后一个域,并且统计bash有多少个?nologin的有多少个?
:cat /etc/passwd | awk -F"/" '{print $NF}' |grep "nologin" |wc -l
9 请打印出UID小于500 但是大于200的用户信息
:cat /etc/passwd | awk -F: '{if($3<500 && $4>200)print "uid="$3,"gid="$4}'
10 请打印出带DHCP关键子的用户信息,并且告诉用户在那一行?
:cat /etc/passwd | awk -F: 'BEGIN{i=0}{i++}{if($0~"ftp")print "this user at:"i,$0}'
11 请打印出wu开头的用户有几个?
:cat /etc/passwd | awk -F: '{if($1~"^p")print $1}' | wc -l
12 抽取全域匹配home关键字的有多少个用户?他们是否具bash登录权限
:cat /etc/passwd | awk -F"/" '{if($0~"home")print $0}' | awk  -F"/" '{if($NF=="nologin")print $1}' | awk -F: '{print $1"--cannot login"}'

13 匹配行号大于30 并且球UID大于50或者小于500的用户信息
:cat /etc/passwd | awk -F: 'NR>30{if($3>50 && $4<500)print "uid="$3,"gid="$4}'
14 匹配系统用户有多少个? 以及程序用户有多少个?
:nologi与login
15 匹配行号小于30的,并且匹配他们的bash的用户有多少个,在输出他们的行号?
:cat  /etc/passwd | awk  -F:(都差不多,不想写了,自己写写吧)






0
0
分享到:
评论

相关推荐

    linux awk详解awk详解awk详解awk详解

    Linux awk 详解 awk 是一种功能强大的程序语言,主要用于处理文档资料。它的名称来自三个最初设计者的姓氏的第一个字母:Alfred V. Aho、Peter J. We i n b e rg e r 和 Brian W.Kernighan。awk 最初在 1977 年完成...

    Linuxawk命令详解[归类].pdf

    Linux awk 命令详解 Linux awk 命令是 Unix 环境中的一种功能强大的文本处理工具,由 Bell Labs 的 Alfred Aho、Peter Weinberger 和 Brian Kernighan 于 1977 年开发。awk 命令的主要功能是从文件或字符串中基于...

    Linux_awk命令详解

    Linux中的awk命令是一个强大的文本分析工具,用于处理和解析文件中的数据。awk的名称来源于它的创始人: Alfred V. Aho, Peter J. Weinberger, 和 Brian W. Kernighan。awk有三个主要版本:awk、nawk(new awk)和...

    LINUX下awk命令详解

    ### Linux 下 awk 命令详解 #### 一、引言 `awk` 是一个功能强大的文本处理工具,在 Unix 和类 Unix 操作系统(如 Linux)中被广泛使用。它不仅可以进行模式匹配,还能执行复杂的文本处理任务。本文将详细介绍 `awk...

    Linux实战awk详解

    Linux实战awk详解主要聚焦在如何利用awk这一强大的命令行工具处理文本流问题。Awk是Linux/unix系统中用于处理结构化文本数据的强大工具,它能够解析、处理和格式化文本,尤其在日志分析、数据提取和报表生成等方面...

    Linux awk 命令用法详解

    Linux awk 命令 AWK是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 语法 awk [选项参数]...

    linux ,awk ,awk详解

    awk 是一个强大的文本分析工具,尤其在 Linux 环境中广泛使用。它结合了正则表达式匹配、样式装入、流控制、数学运算、进程控制和内置变量与函数,使得处理文本数据变得非常高效。awk 可以看作是一种轻量级的编程...

    Linux主要shell命令、sed、awk使用详解

    ### Linux主要Shell命令、sed、awk使用详解 #### 一、Shell基础概念 Shell作为Linux操作系统的核心组件之一,充当着用户与系统内核之间的重要桥梁。通过Shell,用户可以直接与操作系统进行交互,执行各种命令来...

    linux下awk工具的使用

    ### Linux 下 awk 工具的使用详解 #### 1. awk 简介 `awk` 是一款在 Linux/Unix 环境下极其强大的文本处理工具,它能够灵活地处理各种格式的数据文件,适用于数据筛选、分析及格式转换等多种场景。`awk` 的主要优势...

    linux文本处理工具awk命令详解

    linux文本处理工具awk命令详解,超详细的讲解awk命令,更多实战案例

    awk命令详解

    AWK 命令详解 AWK 是一个强大的文本分析工具,相对于 grep 的查找和 sed 的编辑,AWK 在其对数据分析并生成报告时,显得尤为强大。简单来说,AWK 就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分...

    linux awk命令详解.docx

    Linux中的`awk`命令是一个强大的文本分析工具,用于处理和解析结构化的文本文件。它能够按照用户指定的模式对文本进行分析,并根据需要提取、修改或格式化数据。`awk`命令的名字来源于它的三位创始人——Aho、Wall和...

    linux awk学习

    ### Linux Awk 学习知识点详解 #### 一、Awk 简介与基本用法 Awk 是一种在 Unix 和类 Unix 操作系统上广泛使用的文本处理工具,能够帮助用户快速处理文本数据,执行复杂的文本分析任务。Awk 的主要功能包括模式...

    linux grep sed awk命令详解

    ### Linux grep sed awk命令详解 #### 一、grep命令详解 **grep** 是一个用于查找文件里符合条件的字符串的强大工具。它可以对文件进行快速搜索,找出含有特定模式的行。 - **基本语法**:`grep [选项] 模式 文件...

    awk实例详解——Unix下awk的使用

    在Unix和Linux操作系统中,`awk`是一个强大的文本分析工具,用于处理结构化的文本数据,如日志文件、CSV文件等。它通过模式匹配和动作来解析和操作文本,是系统管理员和程序员不可或缺的工具之一。`awk`的名字来源于...

    Linux中awk的使用方法详解

    【Linux中awk的使用方法详解】 awk 是 Linux 及 Unix 环境中的一款强大文本处理工具,被誉为文本处理三剑客之一。它的名字源于其创始人 Alfred Aho、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。awk 具有...

    awk使用详解(英文)

    在提供的英文版`awk`使用详解手册中,你可能会学到更多高级技巧,如自定义分隔符、正则表达式的高级用法、自定义函数、以及如何与其他Unix工具结合使用等。通过深入学习,你将能够更有效地利用`awk`解决日常的文本...

Global site tag (gtag.js) - Google Analytics