awk命令相关知识
-
Linux awk命令详解awk 是除了 sed 命令之外,Linux 系统中另一个功能比较强大的数据处理工具。下面良许小编就将从几个方面对于 Linux awk命令详解命令进行详述,希望对大家有所帮助。 和 sed 命令类似,awk 命令也是逐行扫描文件(从第一行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;否则不对行做任何处理。 awk 在读取文件内容的每一行时,将对比该行是否与给定的模式相匹配,如果匹配,则执行处理过程,否则对该行不做任何处理。如果没有指定处理脚本,则
-
[自用脚本实例]AWK检查UNIX文件系统空间AWK检查UNIX文件系统空间 本文通过一行SHELL命令实现检查当前UNIX文件系统空间中是否存在超过指定百分比,从中可以看到awk命令的强大功能。 使用工具:df命令,awk命令测试环境:AIX 5.x 系统管理员经常要求查看文件系统空间,防止文件系统剩余空间过小,影响系统运行。我们最常使用的命令就是 df –P, 显示结果如下:文件系统 512 块 已使用 可用 容量 安装于/dev/hd4 2097152 39216 2057936 2% //dev/hd2 12320768 4
-
Linux生产环境上,最常用的一套“AWK“技巧awk的命名得自于它的三个创始人姓别的首字母,都是80来岁的老爷爷了。当然也有四个人的组合:流行的GoF设计模式。但对于我这游戏爱好者来说,想到的竟然是三位一体,果然是不争气啊。它长的很像C,为什么这么有名,除了它强大的功能,我们姑且认为a这个字母比较靠前吧。awk比sed简单,它更像一门编程语言。打印某一列下面,这几行代码的效果基本是相同的:打印文件中的第一列。#JavaSystem.out.println(aStr.split(" ")[0]);#Pythonprint(aString.split(" ")[0])#cut 命令cut -d " " -f1 file#awk命令awk '{print $1}' file这可能是awk最常用的功能了:打印文件中的某一列。它智能的去切分你的数据,不管是空格,还是TAB,大概率是你想要的。对于csv这种文件来说,分隔的字符是,。AWK使用-F参数去指定。以下代码打印csv
-
如何使用 Awk 打印文件中的字段和列在 Linux Awk 命令系列介绍 的这部分,我们来看一下 awk 最重要的功能之一,字段编辑。首先我们要知道 Awk 会自动把输入的行切分为字段,字段可以定义为是一些字符集,这些字符集和其它字段被内部字段分隔符分离。Awk 输出字段和列如果你熟悉 Unix/Linux 或者懂得 bash shell 编程,那么你也应该知道内部字段分隔符(IFS)变量。Awk 默认的 IFS 是 tab 和空格。Awk 字段切分的工作原理如下:当获得一行输入时,根据定义的 IFS,第一个字符集是字段一,用 $1 表示,第二个字符集是字段二,用 $2 表示,第三个字符集是字段三,用 $3 表示,以此类推直到最后一个字符集。为了更好的理解 Awk 的字段编辑,让我们来看看下面的例子:事例 1:: 我创建了一个名为 tecmintinfo.txt 的文件。# vi tecmintinfo.txt# cat tecmintinfo.txt在 Linux 中创建文件然后在命令行中使用以下命令
awk命令相关课程
awk命令相关教程
- 4.3 awk命令详解 4.3.1 awk 输出awk print输出,例如:print item1,item2...1.各字段之间逗号隔开,输出时以空白字符分隔;2.输出的字段可以为字符串或数值,当前记录的字段(如$1)、变量或 awk 的表达式;数值先会转换成字符串然后输出;3.print 命令后面的 item 可以省略,此时其功能相当于print $0,如果想输出空白,可以使用print "";例如:[root@master ~]# awk -F: '{print $1,$NF}' /etc/passwd|column -troot /bin/bashbin /sbin/nologindaemon /sbin/nologinadm /sbin/nologinlp /sbin/nologinsync /bin/syncawk printf 输出printf 命令的使用格式:printf <format> item1,item2...要点:1.其与 print 命令最大区别,printf 需要指定 format,format 必须给出;2.format 用于指定后面的每个 item 输出格式;3.printf 语句不会自动打印换行字符\n。format 格式的指示符都以 % 开头,后跟一个字符:%c:显示ascall码%d:%i:十进制整数%e,%E:科学计数法%f:浮点数%s:字符串%u:无符号整数%%:显示%自身修饰符:#[.#]:第一个#控制显示的宽度:第二个#表示小数点后的精度:%3.1f-:左对齐+:显示数组符号例如:[root@master ~]# awk -F: '{printf "Username:%-15s ,Uid:%d\n",$1,$3}' /etc/passwdUsername:root ,Uid:0Username:bin ,Uid:1Username:daemon ,Uid:2Username:adm ,Uid:3Username:lp ,Uid:4Username:sync ,Uid:5Username:shutdown ,Uid:64.3.2 awk变量记录变量:IFS(input field separator),输入字段分隔符(默认空白)OFS(output field separator),输出字段分隔符RS(Record separator):输入文本换行符(默认回车)ORS:输出文本换行符数据变量NR:the number of input records,awk 命令所处理的文件的行数,如果有多个文件,这个数目会将处理的多个文件计数NF:number of field,当前记录的 field 个数{print NF},{print $NF}ARGV:数组,保存命令行本身这个字符串ARGC:awk 命令的参数个数FILENAME:awk 命令处理的文件名称ENVIRON:当前 shell 环境变量及其值的关联数组awk 'BEGIN{print ENVIRON["PATH"]}'自定义变量-v var=value变量名区分大小写,例如:[root@master ~]# awk -v test="abc" 'BEGIN{print test}'abc[root@master ~]# awk 'BEGIN{var="name";print var}'name4.3.3 操作符算术运算+,-,*,/,^,%。例如:[root@master ~]# awk 'BEGIN{a=5;b=3;print "a + b =",a+b}'a + b = 8字符串操作无符号操作符,表示字符串连接,例如:[root@master ~]# awk 'BEGIN { str1="Hello,"; str2="World"; str3 = str1 str2; print str3 }'Hello,World赋值操作符:=,+=,-=,*=,/=,%=,^=,例如:[root@master ~]# awk 'BEGIN{a=5;b=6;if(a == b) print "a == b";else print "a!=b"}' a!=b[root@master ~]# awk -F: '{sum+=$3}END{print sum}' /etc/passwd72349比较操作符:>,>=,<,<=,!=,==模式匹配符:~:是否匹配!~:是否不匹配例如:[root@master ~]# awk -F: '$1~"root"{print $0}' /etc/passwdroot:x:0:0:root:/root:/bin/bash逻辑操作符:&& 、 || 、 !,例如:[root@master ~]# awk 'BEGIN{a=6;if(a > 0 && a <= 6) print "true";else print "false"}'true函数调用:function_name(argu1,augu2)条件表达式(三元运算):selection?if-true-expresssion:if-false-expression[root@master ~]# awk -F: '{$3>=100?usertype="common user":usertype="sysadmin";printf "%15s:%s\n",$1,usertype}' /etc/passwd root:sysadmin bin:sysadmin daemon:sysadmin adm:sysadmin lp:sysadmin sync:sysadmin shutdown:sysadmin halt:sysadmin4.3.4 Patternempty:空模式,匹配每一行/regular expression/:仅处理能被此处模式匹配到的行,例如;[root@master ~]# awk -F: '$NF=="/bin/bash"{printf "%15s,%s\n",$NF,$1}' /etc/passwd /bin/bash,rootrelational expression:关系表达式,结果为“真”有“假”,结果为“真”才会被处理。Tips:使用模式需要使用双斜线括起来,真:结果为非0值,非空字符串。[root@master ~]# awk -F: '$3>100{print $1,$3}' /etc/passwdsystemd-network 192polkitd 999ceph 167kube 998etcd 997gluster 996nfsnobody 65534chrony 995redis 994awk -F: '$NF=="/bin/bash"{printf "%15s,%s\n",$NF,$1}' /etc/passwdawk -F: '$NF~/bash$/{printf "%15s,%s\n",$NF,$1}' /etc/passwddf -Th|awk '/^\/dev/{print}'line ranges:行范围,制定startline,endline。[root@master ~]# awk -F: '/10/,/20/{print $1}' /etc/passwdgamesftpnobodysystemd-networkdbuspolkitdpostfixsshdcephkubeetcdglusterrpcBEGIN/END模式BEGIN{}:仅在开始处理文本之前执行一次END{}:仅在文本处理完成之后执行一次 [root@master ~]# awk -F: 'BEGIN{print "username uid\n--------------------"}{printf "%-15s:%d\n",$1,$3}END{print "-----------------\nend"}' /etc/passwdusername uid -------------------- root :0 bin :1 daemon :2 adm :3 lp :4 rpc :32 rpcuser :29 nfsnobody :65534 chrony :995 redis :994 ----------------- end4.3.5 控制语句if(condition) {statements},例如:[root@master ~]# awk -F: '{if($3>100) print $1,$3}' /etc/passwdsystemd-network 192polkitd 999ceph 167kube 998etcd 997gluster 996nfsnobody 65534chrony 995redis 994if(condition) {statments} [else {statments}],例如:[root@master ~]# awk -F: '{if($3>100) {printf "Common user:%-15s\n",$1} else {printf "sysadmin user:%-15s\n",$1}}' /etc/passwdsysadmin user:root sysadmin user:bin sysadmin user:daemon sysadmin user:adm sysadmin user:lp sysadmin user:sync sysadmin user:shutdown sysadmin user:halt sysadmin user:mail sysadmin user:operator sysadmin user:games
- 3. awk的处理模式 一般是遍历一个文件中的每一行,然后分别对文件的每一行进行处理。awk对输入的一行数据进行处理的模式,对整个文件进行重复执行此模式处理,在此说明对输入的一行数据处理的内在机制如下图所示:处理过程不断重复,直到到达文件结尾。首先读入文件流的一行到模式空间;在模式空间内,对内容进行模式匹配处理;然后输出处理后的数据内容;清空当前模式空间;读取第二行输入流到模式空间;又开始对模式空间内的第二行输入数据进行处理。总体可以分为以下三步:读(Read):AWK 从输入流(文件、管道或者标准输入)中读入一行然后将其存入内存中。执行(Execute):对于每一行输入,所有的 AWK 命令按顺序执行。 默认情况下,AWK 命令是针对于每一行输入,但是我们可以将其限制在指定的模式中。重复(Repeate):一直重复上述两个过程直到文件结束。
- 6. 注意事项 awk同sed命令类似,只不过sed擅长取行,awk命令擅长取列,awk是对文本进行格式化输出,sed更倾向于对文件进行修改;对于读入的文件可以根据自己需求对IFS/OFS对输入和输出进行修改;awk非常的强大,但是也是三剑客中最难的一个,其作为一门单独的语言,我们在Shell编程中学习常用的命令及语法就已经足够我们使用。
- 1.2 为什么用awk 我们日常工作中有很多需要格式化打印输出的需求,更多的是关注列操作时,就可以利用awk工具来进行处理。awk除了是工具也同样是一门语言,其允许用户创建简短的程序来处理自己的需求,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表等。功能非常的强大,相信在掌握了awk,日常运维工作更加方便高效简单。
- 2.1 命令行参数 在 windows 和 linux 中,操作系统提供了命令行的控制方式,用户输入命令完成任务。例如,建立一个目录,输入如下命令:C:\> mkdir test这条命令创建了一个名称为 test 的目录,字符串 ‘mkdir’ 和字符串 ‘test’ 被称为命令行参数。
- 1. df 命令 若想要知道磁盘空间使用情况,可以使用 df 命令,df 命令可以很方便地查看到磁盘空间使用情况。
awk命令相关搜索
-
ajax
android
a href
abap
abap开发
abort
absolutelayout
abstractmethoderror
abstracttablemodel
accept
access
access教程
accordion
accumulate
acess
action
actionform
actionlistener
activity
addeventlistener