精华内容
下载资源
问答
  • 主要介绍了linux awk时间计算脚本及awk命令详解的相关资料,需要的朋友可以参考下
  • 详解Linux中的awk命令

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

    2021-01-07 07:11:23
    shell中的awk命令 文章目录shell中的awk命令1.awk–“样式扫描和处理语言”2.awk模式匹配3.记录和域4.指定分隔符`-F “”` 指定分隔符`FS=””` 指定分隔符5.关系和布尔运算值6.表达式7.系统变量8.格式化输出9.内置...
  • awk命令

    2019-06-27 11:19:56
    http://www.ruanyifeng.com/blog/2018/11/awk.html
    展开全文
  • awk命令详解

    千次阅读 2021-05-20 13:55:46
    目录一.工作原理二.命令格式三.awk常见的内建变量(可直接用)四.按行输出文本五.按行输出文本六.通过管道、双引号调用Shell 命令awk 数组 一.... 逐行读取文本,默认以空格或...在使用awk命令的过程中,可以使用逻辑操作符

    一.工作原理

    逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。

    • sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个"字段"然后再进行处理。awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。
    • 在使用awk命令的过程中,可以使用逻辑操作符"&&“表示"与”、"II“表示"或”、"!“表示"非”;还可以进行简单的数学运算,如+、一、*、/、%、^分别表示加、减、乘、除、取余和乘方。

    二.命令格式

    awk 选项 '模式或条件{操作}'  文件1 文件2 ...
    awk -f   脚本文件          文件1 文件2 ...
    

    三.awk常见的内建变量(可直接用)

    内建变量作用
    FS列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
    NF当前处理的行的字段个数
    NR当前处理的行的行号(序数)
    $0当前处理的行的整行内容
    $n当前处理行的第n个字段(第n列)
    FILENAME被处理的文件名
    RS行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,,而awk一次仅读入一条记录,以进行处理。预设值是’ \n’

    四.按行输出文本

    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述

    • BEGIN模式表示,在处理指定的文本之前,需要先执行BEGIN模式中指定的动作;
    • awk再处理指定的文本,之后再执行END模式中指定的动作;
    • END{}语句块中,往往会放入打印结果等语句

    五.按行输出文本

    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述

    六.通过管道、双引号调用Shell 命令

    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述

    • 因为空闲率大于100时,位置会被占用;所以用“,”不用空行

    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    getline的作用:

     1. 当getline左右无重定向符"<"或"I"时,awk首先读取到了第一行,就是1,然后getline,就得到了1下面的第二行,就是2,因为getline后,awk会改变对应的NF,NR,FNR和$0等内部变量,所以此时的$0的值就不再是1,而是2了,然后将它打印出来。
     2. 当getline左右有重定向符"<"或"I"时,getline则作用于定向输入文件,由于该文件是刚打开,并没有被awk读入一行,只是getline读入,那么getline返回的是该文件的第一行,而不是隔行。
    

    在这里插入图片描述


    在这里插入图片描述


    awk 数组

    在这里插入图片描述

    未完待续

    展开全文
  • linux awk命令详解

    万次阅读 多人点赞 2019-04-25 11:09:45
    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现...awk命令形式: awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file [-F|-f|-v] 大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=...

    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息

    awk处理过程: 依次对每一行进行处理,然后输出

    awk命令形式:

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

     [-F|-f|-v]   大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value

    '  '          引用代码块

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

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

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

    ;          多条命令使用分号分隔

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

     

    特殊要点:

    $0           表示整个当前行

    $1           每行第一个字段

    NF          字段数量变量

    NR          每行的记录号,多文件记录递增

    FNR        与NR类似,不过多文件记录不递增,每个文件都从1开始

    \t            制表符

    \n           换行符

    FS          BEGIN时定义分隔符

    RS       输入的记录分隔符, 默认为换行符(即文本是按一行一行输入)

    ~            匹配,与==相比不是精确比较

    !~           不匹配,不精确比较

    ==         等于,必须全部相等,精确比较

    !=           不等于,精确比较

    &&      逻辑与

    ||             逻辑或

    +            匹配时表示1个或1个以上

    /[0-9][0-9]+/   两个或两个以上数字

    /[0-9][0-9]*/    一个或一个以上数字

    FILENAME 文件名

    OFS      输出字段分隔符, 默认也是空格,可以改为制表符等

    ORS        输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕

    -F'[:#/]'   定义三个分隔符

     

    print & $0

    print 是awk打印指定内容的主要命令

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

    awk '{print " "}' /etc/passwd                                           //不输出passwd的内容,而是输出相同个数的空行,进一步解释了awk是一行一行处理文本

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

    awk -F":" '{print $1}'  /etc/passwd 

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

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

     

    -f指定脚本文件

    awk -f script.awk  file

    BEGIN{

    FS=":"

    }

    {print $1}               //效果与awk -F":" '{print $1}'相同,只是分隔符使用FS在代码自身中指定

     

    awk 'BEGIN{X=0} /^$/{ X+=1 } END{print "I find",X,"blank lines."}' test 

    I find 4 blank lines.

     ls -l|awk 'BEGIN{sum=0} !/^d/{sum+=$5} END{print "total size is",sum}'                    //计算文件大小

    total size is 17487

     

    -F指定分隔符

    $1 指指定分隔符后,第一个字段,$3第三个字段, \t是制表符

    一个或多个连续的空格或制表符看做一个定界符,即多个空格看做一个空格

    awk -F":" '{print $1}'  /etc/passwd

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

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

    awk -F":" '{print $1 " " $3}'  /etc/passwd                  //$1与$3之间手动添加空格分隔

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

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

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

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

    awk -F: 'NF>2{print $0}' /etc/passwd                       //显示每行字段数量大于2的行

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

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

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

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

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

     

    //匹配代码块

    //纯字符匹配   !//纯字符不匹配   ~//字段值匹配    !~//字段值不匹配   ~/a1|a2/字段值匹配a1或a2   

    awk '/mysql/' /etc/passwd

    awk '/mysql/{print }' /etc/passwd

    awk '/mysql/{print $0}' /etc/passwd                   //三条指令结果一样

    awk '!/mysql/{print $0}' /etc/passwd                  //输出不匹配mysql的行

    awk '/mysql|mail/{print}' /etc/passwd

    awk '!/mysql|mail/{print}' /etc/passwd

    awk -F: '/mail/,/mysql/{print}' /etc/passwd         //区间匹配

    awk '/[2][7][7]*/{print $0}' /etc/passwd               //匹配包含27为数字开头的行,如27,277,2777...

    awk -F: '$1~/mail/{print $1}' /etc/passwd           //$1匹配指定内容才显示

    awk -F: '{if($1~/mail/) print $1}' /etc/passwd     //与上面相同

    awk -F: '$1!~/mail/{print $1}' /etc/passwd          //不匹配

    awk -F: '$1!~/mail|mysql/{print $1}' /etc/passwd        

     

    IF语句

    必须用在{}中,且比较内容用()扩起来

    awk -F: '{if($1~/mail/) print $1}' /etc/passwd                                       //简写

    awk -F: '{if($1~/mail/) {print $1}}'  /etc/passwd                                   //全写

    awk -F: '{if($1~/mail/) {print $1} else {print $2}}' /etc/passwd            //if...else...

     

     

    条件表达式

    ==   !=   >   >=  

    awk -F":" '$1=="mysql"{print $3}' /etc/passwd  

    awk -F":" '{if($1=="mysql") print $3}' /etc/passwd          //与上面相同 

    awk -F":" '$1!="mysql"{print $3}' /etc/passwd                 //不等于

    awk -F":" '$3>1000{print $3}' /etc/passwd                      //大于

    awk -F":" '$3>=100{print $3}' /etc/passwd                     //大于等于

    awk -F":" '$3<1{print $3}' /etc/passwd                            //小于

    awk -F":" '$3<=1{print $3}' /etc/passwd                         //小于等于

     

    逻辑运算符

    && || 

    awk -F: '$1~/mail/ && $3>8 {print }' /etc/passwd         //逻辑与,$1匹配mail,并且$3>8

    awk -F: '{if($1~/mail/ && $3>8) print }' /etc/passwd

    awk -F: '$1~/mail/ || $3>1000 {print }' /etc/passwd       //逻辑或

    awk -F: '{if($1~/mail/ || $3>1000) print }' /etc/passwd 

     

    数值运算

    awk -F: '$3 > 100' /etc/passwd    

    awk -F: '$3 > 100 || $3 < 5' /etc/passwd  

    awk -F: '$3+$4 > 200' /etc/passwd

    awk -F: '/mysql|mail/{print $3+10}' /etc/passwd                    //第三个字段加10打印 

    awk -F: '/mysql/{print $3-$4}' /etc/passwd                             //减法

    awk -F: '/mysql/{print $3*$4}' /etc/passwd                             //求乘积

    awk '/MemFree/{print $2/1024}' /proc/meminfo                  //除法

    awk '/MemFree/{print int($2/1024)}' /proc/meminfo           //取整

     

    输出分隔符OFS

    awk '$6 ~ /FIN/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt

    awk '$6 ~ /WAIT/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt        

    //输出字段6匹配WAIT的行,其中输出每行行号,字段4,5,6,并使用制表符分割字段

     

    输出处理结果到文件

    ①在命令代码块中直接输出    route -n|awk 'NR!=1{print > "./fs"}'   

    ②使用重定向进行输出           route -n|awk 'NR!=1{print}'  > ./fs

     

    格式化输出

    netstat -anp|awk '{printf "%-8s %-8s %-10s\n",$1,$2,$3}' 

    printf表示格式输出

    %格式化输出分隔符

    -8长度为8个字符

    s表示字符串类型

    打印每行前三个字段,指定第一个字段输出字符串类型(长度为8),第二个字段输出字符串类型(长度为8),

    第三个字段输出字符串类型(长度为10)

    netstat -anp|awk '$6=="LISTEN" || NR==1 {printf "%-10s %-10s %-10s \n",$1,$2,$3}'

    netstat -anp|awk '$6=="LISTEN" || NR==1 {printf "%-3s %-10s %-10s %-10s \n",NR,$1,$2,$3}'

     

    IF语句

    awk -F: '{if($3>100) print "large"; else print "small"}' /etc/passwd

    small

    small

    small

    large

    small

    small

    awk -F: 'BEGIN{A=0;B=0} {if($3>100) {A++; print "large"} else {B++; print "small"}} END{print A,"\t",B}' /etc/passwd 

                                                                                                                      //ID大于100,A加1,否则B加1

    awk -F: '{if($3<100) next; else print}' /etc/passwd                         //小于100跳过,否则显示

    awk -F: 'BEGIN{i=1} {if(i<NF) print NR,NF,i++ }' /etc/passwd   

    awk -F: 'BEGIN{i=1} {if(i<NF) {print NR,NF} i++ }' /etc/passwd

    另一种形式

    awk -F: '{print ($3>100 ? "yes":"no")}'  /etc/passwd 

    awk -F: '{print ($3>100 ? $3":\tyes":$3":\tno")}'  /etc/passwd

     

    while语句

    awk -F: 'BEGIN{i=1} {while(i<NF) print NF,$i,i++}' /etc/passwd 

    7 root 1

    7 x 2

    7 0 3

    7 0 4

    7 root 5

    7 /root 6

     

    数组

    netstat -anp|awk 'NR!=1{a[$6]++} END{for (i in a) print i,"\t",a[i]}'

    netstat -anp|awk 'NR!=1{a[$6]++} END{for (i in a) printf "%-20s %-10s %-5s \n", i,"\t",a[i]}'

    9523                               1     

    9929                               1     

    LISTEN                            6     

    7903                               1     

    3038/cupsd                   1     

    7913                               1     

    10837                             1     

    9833                               1     

     

    应用1

    awk -F: '{print NF}' helloworld.sh                                                       //输出文件每行有多少字段

    awk -F: '{print $1,$2,$3,$4,$5}' helloworld.sh                                 //输出前5个字段

    awk -F: '{print $1,$2,$3,$4,$5}' OFS='\t' helloworld.sh                 //输出前5个字段并使用制表符分隔输出

    awk -F: '{print NR,$1,$2,$3,$4,$5}' OFS='\t' helloworld.sh           //制表符分隔输出前5个字段,并打印行号

     

    应用2

    awk -F'[:#]' '{print NF}'  helloworld.sh                                                  //指定多个分隔符: #,输出每行多少字段

    awk -F'[:#]' '{print $1,$2,$3,$4,$5,$6,$7}' OFS='\t' helloworld.sh   //制表符分隔输出多字段

     

    应用3

    awk -F'[:#/]' '{print NF}' helloworld.sh                                               //指定三个分隔符,并输出每行字段数

    awk -F'[:#/]' '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}' helloworld.sh     //制表符分隔输出多字段

     

    应用4

    计算/home目录下,普通文件的大小,使用KB作为单位

    ls -l|awk 'BEGIN{sum=0} !/^d/{sum+=$5} END{print "total size is:",sum/1024,"KB"}'

    ls -l|awk 'BEGIN{sum=0} !/^d/{sum+=$5} END{print "total size is:",int(sum/1024),"KB"}'         //int是取整的意思

     

    应用5

    统计netstat -anp 状态为LISTEN和CONNECT的连接数量分别是多少

    netstat -anp|awk '$6~/LISTEN|CONNECTED/{sum[$6]++} END{for (i in sum) printf "%-10s %-6s %-3s \n", i," ",sum[i]}'

     

    应用6

    统计/home目录下不同用户的普通文件的总数是多少?

    ls -l|awk 'NR!=1 && !/^d/{sum[$3]++} END{for (i in sum) printf "%-6s %-5s %-3s \n",i," ",sum[i]}'   

    mysql        199 

    root           374 

    统计/home目录下不同用户的普通文件的大小总size是多少?

    ls -l|awk 'NR!=1 && !/^d/{sum[$3]+=$5} END{for (i in sum) printf "%-6s %-5s %-3s %-2s \n",i," ",sum[i]/1024/1024,"MB"}'

     

    应用7

    输出成绩表

    awk 'BEGIN{math=0;eng=0;com=0;printf "Lineno.   Name    No.    Math   English   Computer    Total\n";printf "------------------------------------------------------------\n"}{math+=$3; eng+=$4; com+=$5;printf "%-8s %-7s %-7s %-7s %-9s %-10s %-7s \n",NR,$1,$2,$3,$4,$5,$3+$4+$5} END{printf "------------------------------------------------------------\n";printf "%-24s %-7s %-9s %-20s \n","Total:",math,eng,com;printf "%-24s %-7s %-9s %-20s \n","Avg:",math/NR,eng/NR,com/NR}' test0


    [root@localhost home]# cat test0 

    Marry   2143 78 84 77

    Jack    2321 66 78 45

    Tom     2122 48 77 71

    Mike    2537 87 97 95

    Bob     2415 40 57 62

    展开全文
  • shell脚本中的awk命令

    千次阅读 2019-06-20 21:51:36
    sed命令疑难问题 sed -ri ‘/^H+/a 11111111111’ /etc/sysconfig/network 在文件里在以至少一个H开头的行追加111111111 sed -ir ‘/^H+/a 11111111111’ /etc/sysconfig/network 追加不会成功。在 /etc/...

    sed命令疑难问题
    sed -ri ‘/^H+/a 11111111111’ /etc/sysconfig/network
    在文件里在以至少一个H开头的行追加111111111
    sed -ir ‘/^H+/a 11111111111’ /etc/sysconfig/network
    追加不会成功。在 /etc/sysconfig/network备份的文件里加上后缀r
    在这里插入图片描述注:sed -r -i分开来写就不会出现上述问题

     知识要点
    awk命令的工作原理
    awk的基本命令
    awk的内部变量
    awk的自定义变量
    awk的流程控制语句

    awk命令的工作原理
    1.gawk (gnu awk)
    Unix中awk的GNU版本,完成grep和sed的工作
    支持数学运算,流程该控制内置大量的变量和函数

    2.awk命令工作原理
    与sed一样, 均是一行一行的读取、处理
    sed作用于一整行的处理, 而awk将一行分成数个字段来处理

    3.awk命令的简要处理流程在这里插入图片描述4.awk的用-F来指定分隔符
    默认的字段分隔符是任意空白字符(空格或者TAB)
    举例对比cut和awk的区别

    5.awk的数据字段变量
    $0表示整行文本
    $1表示文本中第一个数据字段
    $2表示文本中第二个数据字段
    $n表示文本中第n个数据字段

    awk命令的语法

    1.awk命令的完整语法在这里插入图片描述2.awk的命令的执行过程
    执行BEGIN{commands}语句块中的语句
    从文件或stdin中读取第1行,
    有无模式匹配, 若无则执行{}中的语句,
    若有则检查该整行与pattern是否匹配, 若匹配, 则执行{}中的语句,
    若不匹配则不执行{}中的语句,接着读取下一行
    重复这个过程, 直到所有行被读取完毕
    执行END{commands}语句块中的语句

    3.awk命令的基本语法在这里插入图片描述awk的指令一定要用单引号括起
    awk的动作一定要用花括号括起
    模式可以是正则表达式、条件表达式或两种组合,条件表达式不能加/ /
    如果模式是正则表达式要用/定界符
    多个动作之间用;号分开

    awk基本命令示例
    1.awk基本命令示例
    awk ‘/bash/’ /etc/passwd
    只有模式没有动作结果和grep一样,显示$0
    查找文件内容含有bash的行,整行输出

    who | awk '{print $2}‘
    只有动作没有模式就直接执行动作

    awk -F: ‘/^h/{print $1,$7}’ /etc/passwd
    print执行显示功能将文本输出到STDOUT
    以冒号为分隔符,显示以h开头的行的第一列和第七列

    awk -F: ‘/[h]/{print $1,$7}’ /etc/passwd
    不显示以h开头的行的第一列和第七列 [^h]表示不以h开头的行

    awk -F ‘[?]’ ‘{print $1,$10}’ /etc/passwd
    以:或者/作为分隔符显示第1列和第10列

    awk命令的语法
    awk命令的操作符
    正则表达式和bash一致
    数学运算:+,-,*,/, %,++(自加一),- -(自减一)
    逻辑关系符:&&, ||, !
    比较操作符:>,<,>=,!=,<=,== ~ !~
    文本数据表达式:== (精确匹配)
    波浪号表示匹配后面的模式,想要某个字段进行模式匹配,就要使用(波浪符号) 使用格式: 字段 ~ /模式/
    who | awk '$2 ~ /pts/{print $1}‘
    第二列要包含有pts,然后输出第一列
    awk -F: ‘$3 ~ /<…>/ {print $1,$3}’ /etc/passwd
    冒号作为分隔符,第三列是三个字符的输出第一列和第三列
    seq 100 | awk ‘$1 % 5 == 0 || $1 ~ /^1/{print $1}’
    输出整除5的数和以1开头的数
    awk -F: ‘$1 == “root”{print $1,$3}’ /etc/passwd
    第一个字段等于root就输出第一个字段和第三个字段

    awk基本命令示例
    1.awk基本命令示例
    awk -F: ‘$3>=500{print $1}’ /etc/passwd
    显示UID大于等于500行的用户名
    awk -F: ‘$3>=500 && $3<=60000{print $1}’ /etc/passwd
    显示普通用户名
    awk -F: ‘$3 != $4 {print $1}’ /etc/passwd
    显示UID不等于GID的用户名
    awk -F: ‘/^h/ && /bash/{print $1}’ /etc/passwd
    显示用户名以h开头的普通用户
    ps aux | awk ‘$2 <=10 {print $11}’

    2.awk基本命令示例
    awk ‘BEGIN{print “line one\nline two\nline three”}’
    显示后面三行
    awk ‘END{print “line one\nline two\nline three”}’
    按ctrl+D开始显示后面三行
    awk ‘BEGIN{print “start…”}{print $1}END{print “end…”}’ test
    显示文件的内容并在前面加上start和后面加上end
    awk ‘BEGIN{i=0}{i++}END{print i}’ /etc/passwd
    显示文件的行数

    awk命令的变量
    1.awk命令的内部变量在这里插入图片描述awk基本命令示例
    1.awk基本命令示例
    awk ‘{print NF}’ /etc/grub.conf
    显示每行的字段数目
    awk ‘{print 1 , 1, 1,NF}’ /etc/grub.conf
    显示每行的第一字段 和最后一个字段
    awk ‘{print NR,$0}’ /etc/grub.conf
    显示每行的内容和行号
    awk -F: ‘BEGIN{OFS="—"}{print $1,KaTeX parse error: Expected 'EOF', got '}' at position 2: 7}̲' /etc/passwd 显…/{print NR,$1}END{print NR}’ /etc/passwd
    显示符合模式的用户名和所在的行号最后显示总行号

    awk ‘NR==3,NR=5’ /etc/grub.conf
    显示文件的3到5行
    awk ‘NR<=10’ /etc/fstab
    显示文件的前10行

    awk基本实验案例1
    1.分析下面三条命令的区别,为什么
    awk ‘BEGIN{print NR}’ /etc/passwd
    awk ‘{print NR}’ /etc/passwd
    awk ‘END{print NR}’ /etc/passwd

    2.分析下面命令的执行结果
    awk -F: ‘{print $NR}’ /etc/passwd
    awk -F: ‘{print NR, NF, $1, $NF, $(NF-1)}’ /etc/passwd

    3.只显示df -h结果的第一列文件系统
    4.显示passwd文件的第5行和第10行的行号和用户名

    awk基本实验案例2
    使用NF变量显示passwd文件倒数第二列的内容
    显示passwd文件中第5到第10行的用户名
    显示passwd文件中第7列不是bash的用户名
    显示passwd文件中行号是5结尾的行号和行
    用ifconfig只显示ip(不能使用tr或者cut命令)
    使用awk显示eth0的入站流量和出站流量(字节)
    使用awk命令统计以r开头的用户数目,显示如下效果在这里插入图片描述
    awk命令的变量
    1.awk命令的引用shell变量
    -v 引入shell变量
    在这里插入图片描述2.分析下面脚本的意思在这里插入图片描述awk命令的函数
    awk编程语言内置了很多函数
    例如利用length计算字符数目的函数来检查有无空口令用户
    在这里插入图片描述显示文件中超过60个字符的行在这里插入图片描述awk命令的结构化语句
    1.if语句
    单分支在这里插入图片描述awk -F: ‘{if($1 ~ /<…>/)print $0}’ /etc/passwd
    awk -F: ‘{if($3 >= 500)print $1,$7}’ /etc/passwd

    2.双分支
    在这里插入图片描述
    awk -F: ‘{if($3 != 0) print $1 ; else print $3}’ /etc/passwd

    3.多分支
    awk -F: ‘{if($1==“root”) print $1; else if($1==“ftp”) print $2; else if($1==“mail”) print $3; else print NR}’ /etc/passwd

    awk命令if语句案例
    监控多台主机的磁盘分区一旦某台被监控主机的任一分区使用率大于80%, 就给root发邮件报警在这里插入图片描述
    实验案例3
    检查/var/log/secure日志文件,如果有主机用root用户连接服务器的ssh服务失败次数超过10次(10次必须使用变量),就将这个IP地址加入/etc/hosts.deny文件拒绝其访问,如果这个IP已经存在就无需重复添加到/etc/hosts.deny文件

    展开全文
  • Linux awk 命令用法详解

    2021-01-20 14:57:23
    Linux awk 命令 AWK是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 语法 awk [选项参数]...
  • 本文主要研究的是linux中sed命令和awk命令的使用的相关内容,具体如下。 1、sed命令:没有重定向不会真正修改源文件中的内容 查询语句 ①sed -n ‘/sbin/p’ passwd 表示查询出passwd文件中存在sbin字符的所有行...
  • awk命令简介

    2015-04-16 14:06:49
    awk命令 简介
  • awk命令是一种编程语言,用于在linux/unix下对文本和数据进行处理。 而且它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。 语法格式:awk [参数] [文件] 常用参数: -F ...
  • linux中的awk命令详解

    万次阅读 多人点赞 2018-01-14 14:23:33
    1、AWK简介 AWK是一种处理文本文件的语言,是一个强大的文本分析工具。 2、AWK语法 awk [选项参数] 'script' var=value file(s) 或 awk [选项参数] -f scriptfile var=value file(s) 选项参数的说明: -F ...
  • awk命令取字段用变量 Awk有多种变体:有原始的awk ,写于1977年在AT&T贝尔实验室,还有一些重新实现,例如mawk , nawk ,以及大多数Linux发行版,GNU awk或gawk附带的版本。 在大多数Linux发行版中,awk和gawk是...
  • 本文主要对linux-shell脚本命令中的awk命令进行简单介绍,希望对您有所帮助。
  • Linux下awk命令简介

    千次阅读 多人点赞 2019-06-17 18:52:11
    初识awk 我们先来用专业的术语描述一下awk是什么,如果你看不懂,没关系,我们会再用...你可能不理解所谓的报告生成器中的"报告"是什么,你可以把"报告"理解为"报表"或者"表格",也就是说,我们可以利用awk命令...
  • android设备不识别awk命令,缺少busybox 一、什么是BusyBox ? BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、...
  • shell-awk命令详解

    万次阅读 2018-04-15 20:39:26
    AWK命令介绍awk 语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk 抽取信息后,才能进行其他文本操作,完整的 awk 脚本通常用来格式化文本文件中的信息 1. 调用 awk:第一种命令行方式,如:Shell...
  • Linux之awk命令详解

    2018-10-03 21:39:18
    文章目录awk命令格式awk脚本基本格式awk执行过程分析awk内置变量将外部变量值传递给awkawk运算awk高级输入输出循环结构数组等awk实例 awk命令格式 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。...
  • 主要介绍了awk命令、awk编程语言详细介绍和实例,讲解了如awk中的记录、域、分割符,awk的内建变量和运算符等,需要的朋友可以参考下
  • Awk命令详解

    千次阅读 2020-08-15 22:08:21
    awk 文本和数据进行处理的编程语言 awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,...awk命令格式和选项 语法形式 awk [options] ‘script’ va
  • 掌握awk命令

    2013-11-08 10:13:04
    血蝙蝠出品,精心总结的关于服务器编程实际工作中用到的一些重要工具和技术的第二篇,内容共10页word文档,希望能帮助需要这个小工具的朋友尽快掌握它!
  • 用cut和awk命令按列去文本进行提取 用cut分别提取第一列第二列 明显提取失败可见对于cut并不认识空格符所以它把这3列作为整体。接下来用awk提取 也是提取前2列 提取成功 可见对于awk把空格符当作分隔符,但是对于...
  • 最牛逼的Linux awk命令详细介绍和实例快速学习
  • Linux awk命令高级用法完全攻略

    千次阅读 2019-07-06 21:03:56
    前面一节已经介绍了 awk 的基本用法,其实在 awk 脚本程序中,还支持使用一些编程语言,比如变量、数组、分支结构(if-then-else)、循环结构(while)、函数等,下面一一给大家介绍。 awk 使用变量 在 awk 的...
  • shell之awk命令详解

    千次阅读 2019-01-04 10:21:24
    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会...awk命令形式: awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file  [-F|-f|-v] 大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,080
精华内容 55,232
关键字:

awk命令