gawk

gawk简介awk报告生成器,作用格式化文本输出:awk分为awk.nawk.gawk。但是linux上的awk为gawk基本用法gawk[options]'program'

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

简介

  awk  报告生成器,作用格式化文本输出:

  awk分为awk.nawk. gawk。

  但是linux上的awk为gawk

[root@web1 base]# which awk
/usr/bin/awk
[root@web1 base]# ll /usr/bin/awk 
lrwxrwxrwx. 1 root root 4 Jul 26 10:57 /usr/bin/awk -> gawk

 基本用法

  gawk [options]  ‘program’ FILE …

  program: PATTERN{ACTION STATEMENTS}

  可以允许多个语句,语句之间用分号分隔

选项

  -F: 指明输入时用到的字段分隔符;

  -v var=value: 自定义变量

工作模式

  一行一行读取,默认按空格分隔,默认保存在awk的内建变量中。$0显示所有 $1显示第一个 以此类推。

输出命令

  1. print  

    print item1,item2

  要点:

    (1) 逗号分割符‘

    (2)输出的个item可以是字符串,也可以是数值(运算是依旧是数值,但是输出后为字符串。);当前记录的字段、变量活awk的表达式;

    (3)如省略item,相当于print $0;

  2. 变量

    (1)内建变量

      FS: input field separator(输入字段分隔符) 默认为空白字符

[root@web1 script]# awk -v FS=':' '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
postfix
sshd

      OFS: output field separator(输出字段分割符)默认为空白字符

[root@web1 script]# awk -v FS=':' -v OFS=':' '{print $1,$3,$7}' /etc/passwd
root:0:/bin/bash
bin:1:/sbin/nologin
daemon:2:/sbin/nologin
adm:3:/sbin/nologin
lp:4:/sbin/nologin
sync:5:/bin/sync
shutdown:6:/sbin/shutdown
halt:7:/sbin/halt
mail:8:/sbin/nologin
operator:11:/sbin/nologin
games:12:/sbin/nologin
ftp:14:/sbin/nologin
nobody:99:/sbin/nologin
systemd-network:192:/sbin/nologin
dbus:81:/sbin/nologin
polkitd:999:/sbin/nologin
postfix:89:/sbin/nologin
sshd:74:/sbin/nologin

      RS:input record separator,输入时的换行符;

[root@web1 script]# awk -v RS=' ' '{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP
User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd
Network
Management:/:/sbin/nologin
dbus:x:81:81:System
message
bus:/:/sbin/nologin
polkitd:x:999:997:User
for
polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated
SSH:/var/empty/sshd:/sbin/nologin
原来的换行符还是换行符

      ORS output record separator,输出的换行符;

[root@web1 script]# awk -v ORS=' ' '{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:997:User for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin [root@web1 script]#

      NF:number of filed  字段数量   

      在awk内部引用变量不需要加$  引用字段需要加行数。

[root@web1 script]# awk '{print NF}' /etc/passwd
1
1
1
1
1
1
1
1
1
1
1
2
1
3
3
3
1
2
[root@web1 script]# awk '{print $NF}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
Management:/:/sbin/nologin
bus:/:/sbin/nologin
polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
SSH:/var/empty/sshd:/sbin/nologin

      NR: number of record, 行数   

   

[root@web1 script]# awk '{print NR}' /etc/passwd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

      如果多个文件进行计数,会和起来显示

[root@web1 script]# awk '{print NR}' /etc/passwd /etc/issue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

      FNR:     每一个文件进行单个计行数;

[root@web1 script]# awk '{print FNR}' /etc/passwd /etc/issue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3

    FILENAME:  当前正在处理文件名字  

[root@web1 script]# awk '{print FILENAME}' /etc/passwd /etc/issue
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/passwd
/etc/issue
/etc/issue
/etc/issue

    ARGC:命令行参数的个数:

[root@web1 script]# awk '{print ARGC}' /etc/passwd /etc/issue
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
[root@web1 script]# awk 'BEGIN{print ARGC}' /etc/passwd /etc/issue
3

      ARGV: 数组,保存的是命令行所给定的各参数。

[root@web1 script]# awk 'BEGIN{print ARGC}' /etc/passwd /etc/issue
3
[root@web1 script]# awk 'BEGIN{print ARGV[0]}' /etc/passwd /etc/issue
awk
[root@web1 script]# awk 'BEGIN{print ARGV[1]}' /etc/passwd /etc/issue
/etc/passwd
[root@web1 script]# awk 'BEGIN{print ARGV[2]}' /etc/passwd /etc/issue
/etc/issue

 

    (2)自定义变量

      1. -v  var=value

        变量名区分字符大小写;

[root@web1 script]# awk -v test='hello' '{print test}' /etc/fstab 
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
[root@web1 script]# awk -v test='hello' 'BEGIN{print test}' 
hello

       2. program 定义

 

[root@web1 script]# awk 'BEGIN{test="hello hai";print test}'
hello hai

      3.printf命令

        格式化输出: printf FORMAT,ITEM1.ITEM2,…..

        (1)FORMAT必须给出;

        (2)不会自动换行,需要显式给出换行控制符,  \n

        (3)FORMAT中需要分别为后面的每个item指定一个格式化符号;

        格式符:

          %c: 显示字符的ASCII码

          %d,%i::显示十进制整数;

          %e,%E: 科学计数法数值显示

          %f: 显示为浮点数;

          %g,%G: 以科学技术法或浮点形势显示数值;

          %s: 显示字符串;

          %u: 无符号整数;

          %%: 显示%自身

 

[root@web1 script]# awk -F: '{printf "username: %s\n",$1}' /etc/passwd
username: root
username: bin
username: daemon
username: adm
username: lp
username: sync
username: shutdown
username: halt
username: mail
username: operator
username: games
username: ftp
username: nobody
username: systemd-network
username: dbus
username: polkitd
username: postfix
username: sshd
[root@web1 script]# awk -F: '{printf "username: %s,UID: %d\n",$1,$3}' /etc/passwd
username: root,UID: 0
username: bin,UID: 1
username: daemon,UID: 2
username: adm,UID: 3
username: lp,UID: 4
username: sync,UID: 5
username: shutdown,UID: 6
username: halt,UID: 7
username: mail,UID: 8
username: operator,UID: 11
username: games,UID: 12
username: ftp,UID: 14
username: nobody,UID: 99
username: systemd-network,UID: 192
username: dbus,UID: 81
username: polkitd,UID: 999
username: postfix,UID: 89
username: sshd,UID: 74

        修饰符:

          #[.#]:第一个数字控制显示的快读;第二个表示小数点后的精度:

            如 %3.1f

[root@web1 script]# awk -F: '{printf "username: %15s,UID: %d\n",$1,$3}' /etc/passwd
username:            root,UID: 0
username:             bin,UID: 1
username:          daemon,UID: 2
username:             adm,UID: 3
username:              lp,UID: 4
username:            sync,UID: 5
username:        shutdown,UID: 6
username:            halt,UID: 7
username:            mail,UID: 8
username:        operator,UID: 11
username:           games,UID: 12
username:             ftp,UID: 14
username:          nobody,UID: 99
username: systemd-network,UID: 192
username:            dbus,UID: 81
username:         polkitd,UID: 999
username:         postfix,UID: 89
username:            sshd,UID: 74

        -: 左对齐

[root@web1 script]# awk -F: '{printf "username: %-15s,UID: %d\n",$1,$3}' /etc/passwd
username: root           ,UID: 0
username: bin            ,UID: 1
username: daemon         ,UID: 2
username: adm            ,UID: 3
username: lp             ,UID: 4
username: sync           ,UID: 5
username: shutdown       ,UID: 6
username: halt           ,UID: 7
username: mail           ,UID: 8
username: operator       ,UID: 11
username: games          ,UID: 12
username: ftp            ,UID: 14
username: nobody         ,UID: 99
username: systemd-network,UID: 192
username: dbus           ,UID: 81
username: polkitd        ,UID: 999
username: postfix        ,UID: 89
username: sshd           ,UID: 74

        +:显示数值的服务  加号会显示出来

[root@web1 script]# awk -F: '{printf "username: %-15s,UID: %+d\n",$1,$3}' /etc/passwd
username: root           ,UID: +0
username: bin            ,UID: +1
username: daemon         ,UID: +2
username: adm            ,UID: +3
username: lp             ,UID: +4
username: sync           ,UID: +5
username: shutdown       ,UID: +6
username: halt           ,UID: +7
username: mail           ,UID: +8
username: operator       ,UID: +11
username: games          ,UID: +12
username: ftp            ,UID: +14
username: nobody         ,UID: +99
username: systemd-network,UID: +192
username: dbus           ,UID: +81
username: polkitd        ,UID: +999
username: postfix        ,UID: +89
username: sshd           ,UID: +74

      4.操作符

        算数操作符:

          x+y, x-y, x*y, x/y, x^y, x%y

          -x

          +x:  转化为数值

        字符串操作符: 没有符号的操作符, 字符串连接

        赋值操作符:

          =, +=, -=, 、=, %=, ……= 

          ++, —

        比较操作符:

          >,>=,<,<=,!=,==

        模式匹配符:

          ~: 是否匹配

          !~ 是否不匹配

        逻辑操作符:

          &&

          ||

          !

        函数调用:

          function_name(argu1,argu2,…)

        条件表达式:

          selector?if-true-expression:if-false-expression

[root@web1 script]# awk -F: '{$3>=1000?usertype="Common User":usertype="Sysadmin or SysUser";printf "%-15s:%s\n",$1,usertype}' /etc/passwd
root           :Sysadmin or SysUser
bin            :Sysadmin or SysUser
daemon         :Sysadmin or SysUser
adm            :Sysadmin or SysUser
lp             :Sysadmin or SysUser
sync           :Sysadmin or SysUser
shutdown       :Sysadmin or SysUser
halt           :Sysadmin or SysUser
mail           :Sysadmin or SysUser
operator       :Sysadmin or SysUser
games          :Sysadmin or SysUser
ftp            :Sysadmin or SysUser
nobody         :Sysadmin or SysUser
systemd-network:Sysadmin or SysUser
dbus           :Sysadmin or SysUser
polkitd        :Sysadmin or SysUser
postfix        :Sysadmin or SysUser
sshd           :Sysadmin or SysUser

     5.PATTERN

      (1) empty: 空模式,匹配每一行;

      (2)/regular expression/: 仅处理能够被此处的模式匹配到的行

[root@web1 script]# awk '/^UUID/{print $1}'  /etc/fstab 
UUID=0b8ca594-564a-47af-9e39-4a792e404379
UUID=eb2eed65-bb35-4af0-b08a-a816d8f13204

      (3) relational expression: 关系表达式:结果又“真”有“假”;结果为“真”才会被处理

          真:  结果为非0值,非空字符串表示为真;

[root@web1 script]# awk -F: '$3>=500{print $1,$3}' /etc/passwd
polkitd 999

       (4)  line ranges: 行范围,

          startline,endline: /pat1/,/pat2/

          注意: 不支持直接给出数字的格式

[root@YJSJ-SERVER-02 application]# awk -F:  '(NR>=2&&NR<=10){print $1}' /etc/passwd
bin
daemon
adm
lp
sync
shutdown
halt
mail
uucp

      (5)BEGIN/END模式

          BEGIN{}: 仅在开始处理文件的文本之前执行一次;

          END{}: 仅在文本处理完成之后执行一次;

gawk
gawk

[root@YJSJ-SERVER-02 application]# awk -F: 'BEGIN{print "username uid \n------------------"}{print $1,$3}' /etc/passwd username uid ------------------ root 0 bin 1 daemon 2 adm 3 lp 4 sync 5 shutdown 6 halt 7 mail 8 uucp 10 operator 11 games 12 gopher 13 ftp 14 nobody 99 vcsa 69 saslauth 499 postfix 89 sshd 74 ntp 38 tcpdump 72 nscd 28 nginx 500 zabbix 498 mysql 27 apache 48 squid 23 web 501 gitlab-www 497 git 496 gitlab-redis 495 gitlab-psql 494 gitlab-prometheus 493 dbus 81 nexus 502 jira 503 log 504 [root@YJSJ-SERVER-02 application]# awk -F: '{print "username uid \n------------------"}{print $1,$3}' /etc/passwd username uid ------------------ root 0 username uid ------------------ bin 1 username uid ------------------ daemon 2 username uid ------------------ adm 3 username uid ------------------ lp 4 username uid ------------------ sync 5 username uid ------------------ shutdown 6 username uid ------------------ halt 7 username uid ------------------ mail 8 username uid ------------------ uucp 10 username uid ------------------ operator 11 username uid ------------------ games 12 username uid ------------------ gopher 13 username uid ------------------ ftp 14 username uid ------------------ nobody 99 username uid ------------------ vcsa 69 username uid ------------------ saslauth 499 username uid ------------------ postfix 89 username uid ------------------ sshd 74 username uid ------------------ ntp 38 username uid ------------------ tcpdump 72 username uid ------------------ nscd 28 username uid ------------------ nginx 500 username uid ------------------ zabbix 498 username uid ------------------ mysql 27 username uid ------------------ apache 48 username uid ------------------ squid 23 username uid ------------------ web 501 username uid ------------------ gitlab-www 497 username uid ------------------ git 496 username uid ------------------ gitlab-redis 495 username uid ------------------ gitlab-psql 494 username uid ------------------ gitlab-prometheus 493 username uid ------------------ dbus 81 username uid ------------------ nexus 502 username uid ------------------ jira 503 username uid ------------------ log 504

View Code

    6.常用的action

      (1)Expreessions 表达式

      (2)Control statements: if,while等

      (3)Compound statements: 组合语句

      (4)input statements

      (5)output statements 

    7.控制语句

      if(condition){statements}

      if(condition){statements} else {statement}

      while(conditon){staements}

      do {statement} while(conditon)

      for(expr1,expr2,expr3){statements}

      break

      continue

      delete array[index]   从数组中删除某个元素

      delete arrat  删除数组

      exit

      { statements}

    7.1 if-else

      语法: if(condition){statements} else {statement}

      使用场景:对awk取的整行或某个字段做条件判断;

[root@web1 tmp]# awk -F: '{if($3>500) print$1,$3}' /etc/passwd polkitd 999

 

[root@web1 tmp]# awk -F: '{if($3>500) {printf "Conmon user: %s\n",$1} else {printf "root or sysuser: %s\n",$1}}' /etc/passwd root or sysuser: root root or sysuser: bin root or sysuser: daemon root or sysuser: adm root or sysuser: lp root or sysuser: sync root or sysuser: shutdown root or sysuser: halt root or sysuser: mail root or sysuser: operator root or sysuser: games root or sysuser: ftp root or sysuser: nobody root or sysuser: systemd-network root or sysuser: dbus Conmon user: polkitd root or sysuser: postfix root or sysuser: sshd
[root@web1 tmp]# awk -F: '{if($NF=="/bin/bash") print $1}' /etc/passwd root [root@web1 tmp]# awk '{if(NF>5) print $0}' /etc/fstab # Created by anaconda on Thu Jul 26 10:57:01 2018 # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info UUID=0b8ca594-564a-47af-9e39-4a792e404379 / xfs defaults 0 0 UUID=eb2eed65-bb35-4af0-b08a-a816d8f13204 /boot xfs defaults 0 0

      7.2 while循环

          while(conditon){staements}

          使用场景:对一行内的多个字段逐一类似处理时使用;

[root@web1 ~]# awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {if(length($i)>=7) {print $i,length($i)}; i++}}' /etc/grub2.cfg linux16 7 /vmlinuz-3.10.0-693.el7.x86_64 30 root=UUID=0b8ca594-564a-47af-9e39-4a792e404379 46 crashkernel=auto 16 LANG=en_US.UTF-8 16 linux16 7 /vmlinuz-0-rescue-4448785178734432b18eb960343dfaae 50 root=UUID=0b8ca594-564a-47af-9e39-4a792e404379 46 crashkernel=auto 16

    7.3 do-while

        语法 :do {statement} while(conditon)

        意义:只要执行一次循环体

    7.4 for 循环

      语法  for(expr1,expr2,expr3){statements}

      for(variable assignment;codition iteration process)

[root@web1 ~]# awk '/^[[:space:]]*linux16/{for (i=1;i<NF;i++){print $i,length($i)}}' /etc/grub2.cfg linux16 7 /vmlinuz-3.10.0-693.el7.x86_64 30 root=UUID=0b8ca594-564a-47af-9e39-4a792e404379 46 ro 2 crashkernel=auto 16 rhgb 4 quiet 5 linux16 7 /vmlinuz-0-rescue-4448785178734432b18eb960343dfaae 50 root=UUID=0b8ca594-564a-47af-9e39-4a792e404379 46 ro 2 crashkernel=auto 16 rhgb 4 [root@web1 ~]# awk '/^[[:space:]]*linux16/{print}' /etc/grub2.cfg linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=0b8ca594-564a-47af-9e39-4a792e404379 ro crashkernel=auto rhgb quiet LANG=en_US.UTF-8 linux16 /vmlinuz-0-rescue-4448785178734432b18eb960343dfaae root=UUID=0b8ca594-564a-47af-9e39-4a792e404379 ro crashkernel=auto rhgb quiet [root@web1 ~]# 

        特殊用法;

          能够遍历数组中的元素;

          语法: for(var in array)(for-body)

      7.5 switch语句  多重判断语句

          语句: switch(expression){case VALUE1 or /REGEXP/:statement; case VALUE2 or /REGEXP2/:statement;…default:statement}

      7.6 break和continue

        break [n]

        continue

      7.7 next

        提前结束对本行的处理而直接进入下一行;

        用户id为偶数的打印出来

[root@web1 ~]# awk -F: '{if ($3%2!=0) next;print $1,$3}' /etc/passwd root 0 daemon 2 lp 4 shutdown 6 mail 8 games 12 ftp 14 systemd-network 192 sshd 74

    8.array

      关联数组: ararry[index-expression]

       index-expression

        (1)可使用任意字符串;字符串要使用双引号;

        (2)如果某数组元素事先不存在,在引用时,awk会自动创建此元素,并将其值初始化为“空串”;

         若要判断数组中是否存在某元素,要使用“index in array”

[root@web1 tmp]# awk 'BEGIN{weekdays["mon"]="Monday";weekdays["tue"]="Tuesday";print weekdays["mon"]}' Monday [root@web1 tmp]# awk 'BEGIN{weekdays["mon"]="Monday";weekdays["tue"]="Tuesday";print weekdays["tue"]}' Tuesday

      若要遍历数组中的每个元素,要使用for循环;

        for(var in array ){for-body}

[root@web1 tmp]# awk 'BEGIN{weekdays[1]="Monday";weekdays[2]="Tuesday";for(i in weekdays){print weekdays[i]}}' Monday Tuesday

      注意:var会遍历array的每个索引;

 

[root@web1 tmp]# netstat -tan|awk '/^tcp\>/{state[$NF]++}END{for(i in state){print i,state[i]}}' LISTEN 4 ESTABLISHED 8

‘牟定符’
‘\< 词首牟定’
‘\> 词尾牟定’
‘\b 放在词首则表示为牟定词首,放在词尾则表示为牟定词尾’

[root@YUE_TEST_02 application]# awk '{ip[$1]++}END{for( i in ip){print i,ip[i]} }' /var/log/nginx/access.log 91.106.77.208 1 80.82.70.187 1 152.231.52.173 1 78.211.208.37 1 37.195.147.56 1

 显示每个单词出现的次数

[root@YUE_TEST_02 application]# awk '{for(i=1;i<=NF;i++){count[$i]++}}END{for (i in count){print i,count[i]}}' /etc/fstab 

    9. 函数

      9.1 内置函数

        数值处理:

          ’rand(): 返回0和1一个随机数;’

        

[root@YUE_TEST_02 application]# awk 'BEGIN{print rand()}' 0.237788 [root@YUE_TEST_02 application]# awk 'BEGIN{print rand()}' 0.237788

 

          awk命令只有第一次取到的是随机的

        字符串处理
<!--          length([s]): 返回指定字符串的长度'
          sub(r,s,[t]): 以r表示的模式来查找t所表示的字符串中的的匹配的内容,并将第一次出现替换为s所表示的内容;
          g
sub(r,s,[t]): 以r表示的模式来查找t所表示的字符串中的的匹配的内容,并将所有出现替换为s所表示的内容;
          split(s,a,[r]) 以r为分割符切割字符s,并将切割后的结果保存至a所表示的数组中;
-->
  awk 数组以1未开始
[root@YJSJ-SERVER-02 ~]# netstat -tan |awk '/^tcp\>/{split($5,ip,":");count[ip[1]]++}END{for(i in count ){print i,count[i] }}' 10.1.1.103 11 104.152.52.23 1 118.178.213.220 1 106.37.97.167 3 106.11.248.209 1 127.0.0.1 124 106.11.68.13 1 114.242.248.49 2 100.100.30.25 1 140.207.69.101 8 47.52.111.155 4 140.207.69.102 9 47.92.165.213 1 10.1.1.184 37 10.1.1.101 2 0.0.0.0 74 10.1.1.201 1 47.92.73.73 1 10.1.1.187 8 10.1.1.102 223

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168251.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Java超类引用子类对象的规律

    Java超类引用子类对象的规律

  • java 实现http长轮询,Long Polling长轮询实现进阶「建议收藏」

    java 实现http长轮询,Long Polling长轮询实现进阶「建议收藏」LongPolling长轮询实现进阶简书涤生。转载请注明原创出处,谢谢!如果读完觉得有收获的话,欢迎点赞加关注。介绍由于LongPolling长轮询详解这篇文章中的code实现较为简单,尤其是服务端处理较为粗暴,有一些同学反馈希望服务端处理阻塞这块内容进行更深入讨论等等,所以这里专门补一篇实现进阶,让大家对长轮询有更加深刻的理解。疑问对上篇文章,同学反馈有两个疑问。服务端实现使用的是同…

    2022年10月10日
  • datagrip2021.12.4激活【2021.10最新】

    (datagrip2021.12.4激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~4D5U…

  • CUDA安装教程(超详细)

    CUDA安装教程(超详细)目录前言cuda的下载及安装cuda版本CUDAtoolkitDownloadcuda安装cuDNN下载及安装cuDNN下载cuDNN配置参考自前言windows10版本安装CUDA,首先需要下载两个安装包CUDAtoolkit(toolkit就是指工具包) cuDNN注:cuDNN是用于配置深度学习使用官方教程CUDA:InstallationGuideWindows::CUDAToolkitDocumentatio

  • postman安装使用教程—图文讲解

    postman安装使用教程—图文讲解后端开发神器postman。从未想过接口测试这么简单.简化Restful接口调用模式,支持10多种请求方式,如get、post、put、delete等等。并可以自动生成请求代码,包括主流的java,ajax等。

  • java遍历entry,java遍历map entry.set[通俗易懂]

    Java中Map的entrySet()详解以及用法(四种遍历map的方…2020年11月30日entrySet是java中键-值对的集合,Set里面的类型是Map.Entry,一般可以通过map.entrySet()得到。entrySet实现了Set接口,里面存放的是键值对。一个K对……HashMap的添加修改遍历Map.EntryMap.entrySet…_…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号