awk命令取出某一行某一列_awk截取某列中某个字段

摘要:awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 awk的确拥有自己的语言:awk程序设计语言,三位创建者已将它正式定义为“样式扫描和处理语言”。它允许创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

同时,awk又是linux环境下的一个命令行工具,由于awk强大的能力,可以为awk工具传递一个字符串,该字符串的内容类似一种编程语言的语法,所以称其为Awk语言。一般使用awk来做什么,awk又适合做什么工作呢?由于awk天生提供对文件中文本分列进行处理,所以如果一个文件中的每行都被特定的分隔符(常见的是空格)隔开,可以将这个文件看成是由很多列的文本组成,这样的文件最适合用awk进行处理,其实awk在工作中很多时候被用来处理log文件,进行一些统计工作等。

一、命令行格式

awk 'BEGIN{ commands } pattern{ commands } END{ commands }' file

说明:其中options表示awk的可选的命令行选项,其中最常用的恐怕是-F,它指定将文件中每一行分隔成列的分隔符号。而紧接着后面的单引号里面的所有内容是awk的程序脚本,awk需要对文件每一行分割后的每一列做处理。最后的file则是awk要处理的文件名称。

格式解读如下:

awk [-F|-f|-v] 'BEGIN{} //{command1; command2} END{}' file

1、[-F|-f|-v]:-F指定分隔符,-f调用脚本,-v定义变量

2、'':引用代码块

3、BEGIN:初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符。

4、//:匹配代码块,可以是字符串或正则表达式

5、{}:命令代码块,包含一条或多条命令

6、;:多条命令使用分号分隔

7、END:结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息。

8、File:需要处理的文件名称

二、正确理解命令行格式

1、-F指定分隔符

awk -F":" '{print $1}' /etc/passwd //以符号 : 分隔。打印第一列

awk命令取出某一行某一列_awk截取某列中某个字段

awk -F":" '{print $1 $3}' /etc/passwd //$1与$3相连输出,不分隔

awk命令取出某一行某一列_awk截取某列中某个字段

awk -F":" '{print $1,$3}' /etc/passwd //多了一个逗号,$1与$3使用空格分隔

awk命令取出某一行某一列_awk截取某列中某个字段

awk -F":" '{print "Username:" $1 "\t\t Uid:" $3 }' /etc/passwd //自定义输出

awk命令取出某一行某一列_awk截取某列中某个字段

awk -F: '{print NF}' /etc/passwd //显示每行有多少字段

awk命令取出某一行某一列_awk截取某列中某个字段

awk -F: '{print $NF}' /etc/passwd //将每行第NF个字段的值打印出来

awk命令取出某一行某一列_awk截取某列中某个字段

awk -F: 'NF==7 {print }' /etc/passwd //显示只有7个字段的行

awk命令取出某一行某一列_awk截取某列中某个字段

awk '{print NR,$0}' /etc/passwd //输出每行的行号

awk命令取出某一行某一列_awk截取某列中某个字段

awk -F: '{print NR,NF,$NF,"\t",$0}' /etc/passwd //依次打印行号,字段数,最后字段值,制表符,每行内容

awk命令取出某一行某一列_awk截取某列中某个字段

awk -F: 'NR==18{print}' /etc/passwd //显示第18行

awk命令取出某一行某一列_awk截取某列中某个字段

awk -F: 'NR==1 || NR==16{print}' /etc/passwd //显示第1行和第16行

awk命令取出某一行某一列_awk截取某列中某个字段

route -n|awk 'NR!=1{print}' //不显示第一行

awk命令取出某一行某一列_awk截取某列中某个字段

2、-f指定脚本文件

执行#vim script.awk编写如下程序

awk命令取出某一行某一列_awk截取某列中某个字段

执行# awk -f script.awk /etc/passwd指令。如下图

awk命令取出某一行某一列_awk截取某列中某个字段

3、-v指定变量

awk命令取出某一行某一列_awk截取某列中某个字段

说明:使用变量apple并对该变量进行赋值,当值为13时,打印apple13。

4、print 打印指定内容

awk '{print}' /etc/passwd == awk '{print $0}' /etc/passwd

awk命令取出某一行某一列_awk截取某列中某个字段

awk '{print " "}' /etc/passwd //不输出passwd的内容,而是输出相同个数的空行

awk命令取出某一行某一列_awk截取某列中某个字段

awk '{print "a"}' /etc/passwd //输出相同个数的a行,一行只有一个a字母

awk命令取出某一行某一列_awk截取某列中某个字段

awk -F: '{print $1; print $2}' /etc/passwd //将每一行的前二个字段,分行输出

awk命令取出某一行某一列_awk截取某列中某个字段

awk -F: '{print $1,$3,$6}' OFS="\t" /etc/passwd //输出字段1,3,6,以制表符作为分隔符

awk命令取出某一行某一列_awk截取某列中某个字段

5、if语句

使用说明:if语句必须用在{}中,且比较内容用()扩起来。如下图

awk命令取出某一行某一列_awk截取某列中某个字段

6、while语句

使用说明:用while循环语句计算1至100的数相加的值。如下图

awk命令取出某一行某一列_awk截取某列中某个字段

三、AWK使用实例

1、统计/etc/passwd的账户人数

执行指令39;{count++;print $0;} END{print "user count is ", count}' /etc/passwd。如下图

awk命令取出某一行某一列_awk截取某列中某个字段

2、统计系统中的secure文件中谁在远程登录服务器

执行指令39;/sshd/{print $(NF-3)}' secure-20220605 |sort |uniq -c |sort -nk1

awk命令取出某一行某一列_awk截取某列中某个字段

3、统计netstat -anp 状态为LISTEN和CONNECT的连接数量

执行指令39;$6~/LISTEN|CONNECTED/{sum[$6]++} END{for (i in sum) printf "%-10s %-6s %-3s \n", i," ",sum}'

awk命令取出某一行某一列_awk截取某列中某个字段

本文【awk命令取出某一行某一列_awk截取某列中某个字段】由作者: 主键 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4155.html

(0)
上一篇 2023-03-09 08:52:33
下一篇 2023-03-09 08:58:56

相关推荐

  • ldap是什么认证

    如果您是刚接触Active Directory (AD)的初学者,那么当您发现LDAP这个术语时可能会感到十分迷茫。今天就让我们来帮您熟悉 LDAP,相信这对于您学习AD域管理也会有帮助。 首先,让我们直面主题!什么是 LDAP? LDAP指轻型目录访问协议,允许用户查询自身及其他用户属性、资源、应用程序和其他活动目录的详细信息。它是使AD域各类功能成为可能…

    2023-03-19
    000
  • 弗洛伊德算法是谁提出的,弗洛伊德最著名的理论

    算法对于我们的世界是多么重要。自计算机科学诞生之日起,关于算法的研究就一直是一个核心话题。 现代计算机科学中充满了各种各样的算法,许多图灵奖得主也正是因提出的各种经典算法而闻名于世。例如: 提出单源最短路径算法的迪可斯特朗(Edsger Dijkstra,1972年图灵奖得主) 提出字符串匹配算法的高德纳(Donald Knuth,1974年图灵奖得主) 提…

    2023-03-13
    600
  • 联系笔记本电脑键盘错乱

    简介:很多游戏玩家,尤其是喜欢用笔记本电脑玩游戏的大学生,在笔记本外接键盘后发现笔记本自带的键盘按键发生错乱。也有些别的情况会导致笔记本键盘按键错乱,那么我们该如何解决呢? 工具 /原料: 电脑、电脑管家 方法/步骤: 第一步:按下笔记本电脑键盘上的“Fn”+“Insert(Numlk)”。 第二步:在外接键盘的情况下,“Fn”+“Insert(Numlk)…

    2023-03-14
    200
  • 绝对值函数有极值点吗

    今天与大家分享一道有关绝对值不等式的证明问题。不等式证明问题属于高考选考模块,不少考生觉得不等式相对于参数方程更难,所以很少有人选考不等式。究其原因,主要是有关不等式问题的逻辑性较强,尤其一些涉及到不等式证明的试题,还有一定的技巧性。那么在进几年的高考不等式选考模块中,所涉及到的题型主要有求解含有绝对值的不等式以及不等式的证明,后者相对于前者难度更大一些,从…

    2023-03-12
    400
  • 开机运行命令怎么关闭(关闭电脑启动项命令)

    win+R 键盘CTRL旁边的四个小方块, win7单击“开始” — “所有程序”—“附件” — “运行”命令,弹出“运行”对话框,输入msconfig 回车 打开如下图:(嗯,我设置过了,一般打开启动选择是正常启动) 这里我们启动选择,选择有选择的启动,接下来点击引导项,勾选无GUI引导。如下图: 然后选择服务项,勾上隐藏所有Microsoft服务这样就少…

    2023-03-15
    100
  • 怎样自学电脑编程入门,如何学电脑编程入门

    可以从自己感兴趣的领域入手,从基础到进阶学习相关的编程语言,逐步实践做项目。 先跟我一起来了解编程语言及其应用: Python——一种很好的入门语言,用于web应用程序、游戏领域、人工智能和大数据 Java——用于无数种程序中,从游戏到web应用程序再到ATM软件 HTML——任何web开发人员的基本起点 C语言——是一种较古老的语言,C仍然是一个强大的工具…

    为你推荐 2023-03-21
    000
  • 阿里巴巴p8级别对应的工资待遇_p8是什么职位

    互联网大厂是每位程序员梦寐以求的最佳归宿,BAT一直是互联网大厂的标杆。2010年是移动互联网元年,伴随着移动互联网的迅速发展,中国互联网又催生了多家独角兽如字节跳动、美团、拼多多、快手、滴滴等。而在多家独角兽开展资本、市场、人才激烈的争夺中,程序员的待遇也自然水涨船高。 这里简单梳理一下阿里巴巴内部的职位级别和薪资待遇。 职位级别一览表 不同级别程序员年薪…

    2023-03-11
    400
  • 现在学计算机都是傻子

    近些年来,关于计算机类专业人才严重饱和、千万别学计算机科学与技术专业的声音越来越多,甚至有人大言不惭的说出“现在学计算机都是傻子”这种话来,但事实真的如此吗?本期小编就来带大家好好探究真相。 一、现在学计算机都是傻子? 当然不是,对编程、计算机感兴趣,但是又放弃了的人才是傻子。 计算机专业过于热门,供大于求了吗? 在高考志愿填报之前,很多同学都会根据“热门专…

    2023-03-16
    300
  • solidworks零件图和工程图的区别

    SolidWorks工程图关于图纸与图纸格式有一些基本的概念。我们先来了解这些基本概念,知道了这些基本概念,后面的内容就好做多了。大楼框架建立起来了,砌墙,门窗安装还算个事吗?就是这个道理。下面就来说说这些基本的概念。 一、什么是图纸?什么是图纸格式? 1、图纸:图纸就是一张实际空白的纸,我们可以在纸上放置视图、尺寸、注解。但是这些也不是随便放的,图纸有图纸…

    2023-03-16
    100
  • 二次根式与算术平方根之区别

    用基本运算符号把数或表示数的字母连接起来的式子,称为代数式。 基本运算包括加、减、乘、除、乘方和开方,其中,乘方与开方为三级运算 。 开方是指求一个数的方根的运算,为乘方的逆运算。 乘方 求n个相同因数的积的运算,叫做乘方,乘方的结果叫做幂。a叫做底数,n 叫做指数,也可读作“a的n次幂”。 a o = 1 (a≠ 0) a -1 = 1/a 平方根(二次方…

    2023-03-22
    000

发表回复

登录后才能评论
返回顶部
错说博客上线啦!