`
唐美好
  • 浏览: 43815 次
  • 性别: 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命令详解

    本文档详细介绍linux命令,linux工具awk的使用,对初学者非常有帮助,希望读者能从该文档受益。

    Linux awk 命令用法详解

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

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

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

    Linux中awk的使用方法详解

    AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。需要的朋友可以参考下

    Linux中 sed 和 awk的用法详解

    sed是一个很好的文件处理工具,本身是一个管道命令,awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大 ,本文重点给大家介绍Linux中 sed 和 awk的用法,一起...

    一天一个shell命令 linux文本内容操作系列-awk命令详解

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

    详解Linux中的awk命令

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。这篇文章主要介绍了Linux中的awk命令的相关知识,需要的朋友可以参考下

    详解Linx awk 入门教程

    awk是处理文本文件的一个应用程序,几乎所有 Linux 系统都自带这个程序。 它依次处理文件的每一行,并读取里面的每一个字段。对于日志、CSV 那样的每行格式相同的文本文件,awk可能是最方便的工具。 awk其实不仅仅...

    Linux常用命令以及进阶命令

    Linux常用命令以及进阶命令 侵权删 平时的工作中经常碰到很多疑难问题的处理,在解决问题的同时,有一些工具起到了相当大的作用,在此书写下来,一是作为笔记,可以让自己后续忘记了可快速翻阅,二是分享,希望看到...

    详解正则表达式及Linux三大文本处理工具

    grep、sed和awk都是文本处理工具。这篇文章主要介绍了正则表达式及Linux三大文本处理工具,需要的朋友可以参考下

    宋劲彬的嵌入式C语言一站式编程

    目录 历史 前言 I....1. 程序的基本概念 1. 程序和编程语言 2. 自然语言和形式语言 ...3. 在Linux C编程中使用Unicode和UTF-8 B. GNU Free Documentation License Version 1.3, 3 November 2008 参考书目 索引

Global site tag (gtag.js) - Google Analytics