awk 使用方法小结

操作文件netstat.txt格式如下:

[search@CJ-0140 ~]$ head netstat.txt 
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0     52 10.10.0.149:ssh             10.100.100.2:59733          ESTABLISHED 
tcp        0      0 42.62.37.149:27466          202.104.143.5:http          ESTABLISHED 
tcp        0      0 localhost.localdomain:42992 localhost.localdomain:13222 ESTABLISHED 
tcp        0      0 localhost.localdomain:8495  localhost.localdom:palace-2 ESTABLISHED 
tcp        0      0 42.62.37.149:jesmsjc        202.104.143.5:http          ESTABLISHED 
tcp        0      0 42.62.37.149:27458          202.104.143.5:http          ESTABLISHED 
tcp        0      0 42.62.37.149:27459          202.104.143.5:http          ESTABLISHED 
tcp        0      0 localhost.localdomain:6280  localhost.localdomain:11582 ESTABLISHED 

[search@CJ-0140 ~]$ awk '$3==52 {print $1}' netstat.txt     
tcp

1.被单引号中被大括号包括的是awk语句,其只能被单引号包括。$1表示第一个字段,$0表示整行记录,前面的$3==52是判断输出条件。

2.也可以格式化输出对象:

[search@CJ-0140 ~]$ awk '$3==52 {printf "%8s %3s %4s %7s\n" ,$1,$2,$3,$4}' netstat.txt   
     tcp   0   52 10.10.0.149:ssh
[search@CJ-0140 ~]$ awk '$3==52 {printf "%2s %3s %4s %7s\n" ,$1,$2,$3,$4}' netstat.txt  
tcp   0   52 10.10.0.149:ssh

3.过滤记录:若有关于字符串的判断需要用双引号,否则会查不到结果。NR为行号,NR==1表示第一行。

[search@CJ-0140 ~]$ awk '$3==0 && $6=='ESTABLISHED'' netstat.txt 
[search@CJ-0140 ~]$ awk '$3==0 && $6=="ESTABLISHED"' netstat.txt   
tcp        0      0 42.62.37.149:27466          202.104.143.5:http          ESTABLISHED 
tcp        0      0 localhost.localdomain:42992 localhost.localdomain:13222 ESTABLISHED 
tcp        0      0 localhost.localdomain:8495  localhost.localdom:palace-2 ESTABLISHED 
tcp        0      0 42.62.37.149:jesmsjc        202.104.143.5:http          ESTABLISHED 
tcp        0      0 42.62.37.149:27458          202.104.143.5:http          ESTABLISHED 
tcp        0      0 42.62.37.149:27459          202.104.143.5:http          ESTABLISHED 

[search@CJ-0140 ~]$ awk '$3==0 && $6=="ESTABLISHED" ||NR==1' netstat.txt 
Active Internet connections (w/o servers)
tcp        0      0 42.62.37.149:27466          202.104.143.5:http          ESTABLISHED 
tcp        0      0 localhost.localdomain:42992 localhost.localdomain:13222 ESTABLISHED 
tcp        0      0 localhost.localdomain:8495  localhost.localdom:palace-2 ESTABLISHED 
tcp        0      0 42.62.37.149:jesmsjc        202.104.143.5:http          ESTABLISHED 
tcp        0      0 42.62.37.149:27458          202.104.143.5:http          ESTABLISHED 

4.关于awk的内建变量如下:

$0这个变量保存整行记录(当前记录)
 $1~~$n表示记录的各个字段
FS字段间的分隔符,默认是空格或者tab
NF 一行有多少个字段
NR已经输出的记录数,从1开始,要是有多个文件,改值一直累加
FNR当前记录数,这个值只跟当前文件有关系,即文件中的行号
RS输入记录分隔符,默认是换行符
OFS输出字段间的分隔符,默认为空格
ORS输出记录分隔符,默认是换行符
FILENAME当前输入文件名字

指定分隔符:

[search@CJ-0140 ~]$ awk 'BEGIN{FS" "} $3==52 {printf "%2s %3s %4s %4s\n" ,$1,$2,$3,$4}' netstat.txt    
tcp   0   52 10.10.0.149:ssh
[search@CJ-0140 ~]$ awk -F' ' '$3==52 {printf "%2s %3s %4s %4s\n" ,$1,$2,$3,$4}' netstat.txt 
tcp   0   52 10.10.0.149:ssh

所以还是-F方便,用单引号指定分隔符,若用FS还要在BEGIN中,另外分隔符要用双引号

指定输出分隔符:

[search@CJ-0140 ~]$ awk -F' ' '$3==52 {print $1,$2,$3,$4}' netstat.txt 
tcp 0 52 10.10.0.149:ssh
[search@CJ-0140 ~]$ awk -F' ' '$3==52 {print $1,$2,$3,$4}' OFS='\t' netstat.txt  
tcp     0       52      10.10.0.149:ssh

打印行号:

[search@CJ-0140 ~]$ awk -F' ' '$3==52 {print NR,FNR,$1,$2,$3,$4}' OFS='\t' netstat.txt  
3       3       tcp     0       52      10.10.0.149:ssh

5.字符串匹配

[search@CJ-0140 ~]$ awk '$6 ~/CLOSE/ {print NR,FNR,$1,$2,$3,$4,$5,$6}' netstat.txt      
25 25 tcp 1 0 10.10.0.149:23617 10.10.0.100:22121 CLOSE_WAIT
26 26 tcp 1 0 10.10.0.149:11476 10.10.0.100:22121 CLOSE_WAIT
34 34 tcp 1 0 10.10.0.149:28521 10.10.0.100:22121 CLOSE_WAIT
56 56 tcp 1 0 10.10.0.149:13314 10.10.0.100:22121 CLOSE_WAIT
[search@CJ-0140 ~]$ awk '$6 ~/close/ {print NR,FNR,$1,$2,$3,$4,$5,$6}' netstat.txt  

表示匹配第六个字段中包含‘CLOSE’的记录,大小写区别对待,~表示开始模式匹配开始,//双斜杠之间的内容表示要匹配的内容。其实就是一个正则匹配。

再举几个例子如下:

5.1  '|'表示或

[search@CJ-0140 ~]$ awk '$6 ~/close|EST/ {print NR,FNR,$1,$2,$3,$4,$5,$6}' netstat.txt  
3 3 tcp 0 52 10.10.0.149:ssh 10.100.100.2:59733 ESTABLISHED
4 4 tcp 0 0 42.62.37.149:27466 202.104.143.5:http ESTABLISHED
5 5 tcp 0 0 localhost.localdomain:42992 localhost.localdomain:13222 ESTABLISHED
6 6 tcp 0 0 localhost.localdomain:8495 localhost.localdom:palace-2 ESTABLISHED
7 7 tcp 0 0 42.62.37.149:jesmsjc 202.104.143.5:http ESTABLISHED
8 8 tcp 0 0 42.62.37.149:27458 202.104.143.5:http ESTABLISHED
9 9 tcp 0 0 42.62.37.149:27459 202.104.143.5:http ESTABLISHED
10 10 tcp 0 0 localhost.localdomain:6280 localhost.localdomain:11582 ESTABLISHED
11 11 tcp 0 0 localhost.localdomain:33334 localhost.localdomain:21311 ESTABLISHED
12 12 tcp 0 0 localhost.localdomain:18880 localhost.localdomain:33333 ESTABLISHED
13 13 tcp 0 0 42.62.37.149:27456 202.104.143.5:http ESTABLISHED

5.2 像grep用法一样查找包含字符串的行,只不过是把要匹配内容放到'/******/' 之中而已。

[search@CJ-0140 ~]$ awk '/CLOSE/' netstat.txt 
tcp        1      0 10.10.0.149:23617           10.10.0.100:22121           CLOSE_WAIT  
tcp        1      0 10.10.0.149:11476           10.10.0.100:22121           CLOSE_WAIT  
tcp        1      0 10.10.0.149:28521           10.10.0.100:22121           CLOSE_WAIT  
tcp        1      0 10.10.0.149:13314           10.10.0.100:22121           CLOSE_WAIT  
[search@CJ-0140 ~]$ grep CLOSE netstat.txt 
tcp        1      0 10.10.0.149:23617           10.10.0.100:22121           CLOSE_WAIT  
tcp        1      0 10.10.0.149:11476           10.10.0.100:22121           CLOSE_WAIT  
tcp        1      0 10.10.0.149:28521           10.10.0.100:22121           CLOSE_WAIT  
tcp        1      0 10.10.0.149:13314           10.10.0.100:22121           CLOSE_WAIT  

5.3模式取反,在模式开始时加上!

[search@CJ-0140 ~]$ awk '$6 !~ /CLOSE|EST/ {print NR,FNR,$1,$2,$3,$4,$5,$6}' netstat.txt 
1 1 Active Internet connections (w/o servers) 
2 2 Proto Recv-Q Send-Q Local Address Foreign
85 85 Active UNIX domain sockets (w/o servers)
86 86 Proto RefCnt Flags Type State I-Node
87 87 unix 2 [ ] DGRAM 8200
88 88 unix 2 [ ] DGRAM 12138
89 89 unix 2 [ ] DGRAM 10931
90 90 unix 6 [ ] DGRAM 1896021751
91 91 unix 3 [ ] STREAM CONNECTED
92 92 unix 3 [ ] STREAM CONNECTED

[search@CJ-0140 ~]$ awk '$6 ~ /CLOSE|EST/ {print NR,FNR,$1,$2,$3,$4,$5,$6}' netstat.txt  
3 3 tcp 0 52 10.10.0.149:ssh 10.100.100.2:59733 ESTABLISHED
4 4 tcp 0 0 42.62.37.149:27466 202.104.143.5:http ESTABLISHED
5 5 tcp 0 0 localhost.localdomain:42992 localhost.localdomain:13222 ESTABLISHED
6 6 tcp 0 0 localhost.localdomain:8495 localhost.localdom:palace-2 ESTABLISHED
7 7 tcp 0 0 42.62.37.149:jesmsjc 202.104.143.5:http ESTABLISHED
8 8 tcp 0 0 42.62.37.149:27458 202.104.143.5:http ESTABLISHED
9 9 tcp 0 0 42.62.37.149:27459 202.104.143.5:http ESTABLISHED
10 10 tcp 0 0 localhost.localdomain:6280 localhost.localdomain:11582 ESTABLISHED
11 11 tcp 0 0 localhost.localdomain:33334 localhost.localdomain:21311 ESTABLISHED

6.拆分文件.以第六个字段拆分文件,并以第六个字段为文件名

[search@dbl-vm-211-13 algorithm]$ awk 'NR>=3 && NR<=84 {print > $6}' netstat.txt 
[search@dbl-vm-211-13 algorithm]$ ll
total 52
-rwxrwxr-x  1 search search  7338 Aug 21 10:05 a.out
-rwxrwxr-x  1 search search  9098 Aug 21 15:26 bub
-rw-rw-r--  1 search search  1103 Aug 20 17:15 bubblesort.cpp
-rw-rw-r--  1 search search   356 Jan 23 12:33 CLOSE_WAIT
-rw-rw-r--  1 search search  6942 Jan 23 12:33 ESTABLISHED

-rw-rw-r--  1 search search 10819 Jan 23 12:27 netstat.txt
drwxrwxr-x 14 search search  4096 Oct 12 17:24 yuanma
[search@dbl-vm-211-13 algorithm]$ wc -l CLOSE_WAIT 
4 CLOSE_WAIT
[search@dbl-vm-211-13 algorithm]$ wc -l ESTABLISHED 
78 ESTABLISHED

查看文件内容:
[search@dbl-vm-211-13 algorithm]$ head CLOSE_WAIT 
tcp        1      0 10.10.0.149:23617           10.10.0.100:22121           CLOSE_WAIT  
tcp        1      0 10.10.0.149:11476           10.10.0.100:22121           CLOSE_WAIT  
tcp        1      0 10.10.0.149:28521           10.10.0.100:22121           CLOSE_WAIT  
tcp        1      0 10.10.0.149:13314           10.10.0.100:22121           CLOSE_WAIT  
[search@dbl-vm-211-13 algorithm]$ head ESTABLISHED 
tcp        0     52 10.10.0.149:ssh             10.100.100.2:59733          ESTABLISHED 
tcp        0      0 42.62.37.149:27466          202.104.143.5:http          ESTABLISHED 
tcp        0      0 localhost.localdomain:42992 localhost.localdomain:13222 ESTABLISHED 
tcp        0      0 localhost.localdomain:8495  localhost.localdom:palace-2 ESTABLISHED 

6.1也可以指定列输出到文件

[search@dbl-vm-211-13 algorithm]$ awk 'NR>=3 && NR<= 84 {print $1,$2,$3,$4 > $6}' netstat.txt 
[search@dbl-vm-211-13 algorithm]$ ll
total 48
-rwxrwxr-x  1 search search  7338 Aug 21 10:05 a.out
-rwxrwxr-x  1 search search  9098 Aug 21 15:26 bub
-rw-rw-r--  1 search search  1103 Aug 20 17:15 bubblesort.cpp
-rw-rw-r--  1 search search   104 Jan 23 12:41 CLOSE_WAIT
-rw-rw-r--  1 search search  2423 Jan 23 12:41 ESTABLISHED

-rw-rw-r--  1 search search 10819 Jan 23 12:27 netstat.txt
drwxrwxr-x 14 search search  4096 Oct 12 17:24 yuanma
[search@dbl-vm-211-13 algorithm]$ head CLOSE_WAIT 
tcp 1 0 10.10.0.149:23617
tcp 1 0 10.10.0.149:11476
tcp 1 0 10.10.0.149:28521
tcp 1 0 10.10.0.149:13314

6.2 在awk中使用if-else -if语句来分拆文件

[search@dbl-vm-211-13 algorithm]$ awk ' {if($6 ~ /CONNE/) print >"1.txt";else if($6 ~/CLOSE/) print >"2.txt"}' netstat.txt 
[search@dbl-vm-211-13 algorithm]$ ll
total 56
-rw-rw-r--  1 search search  1880 Jan 23 12:57 1.txt
-rw-rw-r--  1 search search   356 Jan 23 12:57 2.txt
-rwxrwxr-x  1 search search  7338 Aug 21 10:05 a.out
-rwxrwxr-x  1 search search  9098 Aug 21 15:26 bub
-rw-rw-r--  1 search search  1103 Aug 20 17:15 bubblesort.cpp
-rw-rw-r--  1 search search   104 Jan 23 12:41 CLOSE_WAIT
-rw-rw-r--  1 search search  2423 Jan 23 12:41 ESTABLISHED
-rw-rw-r--  1 search search 10819 Jan 23 12:27 netstat.txt
drwxrwxr-x 14 search search  4096 Oct 12 17:24 yuanma
[search@dbl-vm-211-13 algorithm]$ cat 2.txt 
tcp        1      0 10.10.0.149:23617           10.10.0.100:22121           CLOSE_WAIT  
tcp        1      0 10.10.0.149:11476           10.10.0.100:22121           CLOSE_WAIT  
tcp        1      0 10.10.0.149:28521           10.10.0.100:22121           CLOSE_WAIT  
tcp        1      0 10.10.0.149:13314           10.10.0.100:22121           CLOSE_WAIT  
[search@dbl-vm-211-13 algorithm]$ cat 1.txt 
unix  3      [ ]         STREAM     CONNECTED     1905375791 
unix  3      [ ]         STREAM     CONNECTED     1905375790 
unix  2      [ ]         STREAM     CONNECTED     1391276691 
unix  2      [ ]         STREAM     CONNECTED     360985513 

7.统计应用,统计所有txt文件的大小总和。

[search@dbl-vm-211-13 algorithm]$ ll *.txt
-rw-rw-r-- 1 search search  1880 Jan 23 12:57 1.txt
-rw-rw-r-- 1 search search   356 Jan 23 12:57 2.txt
-rw-rw-r-- 1 search search 10819 Jan 23 12:27 netstat.txt
[search@dbl-vm-211-13 algorithm]$ ll *.txt |awk '{sum += $5} END{print sum}'
13055

统计中运用数组更为方便:统计第六个字段在文件中出现的次数,并按照次数排序,从大到小排列。在END中巧妙利用for循环。sort -k 3 是对第三列排序,-g表示按照数值大小排序,-r表示逆序,-n表示按照数值字符排序。

[search@dbl-vm-211-13 algorithm]$ awk 'NR!=1 {a[$6]++} END{for(i in a) print i,",",a[i]}' netstat.txt |sort -g -r -k 3
ESTABLISHED , 78
CONNECTED , 28
CLOSE_WAIT , 4
servers) , 1
I-Node , 1
Foreign , 1

统计每个用户内存占用情况

[search@dbl-vm-211-13 algorithm]$ ps -aux |awk '{a[$1]+=$6} END{for(i in a) print i,",",a[i]}' |sort -g -r -k3
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root , 20176
search , 6796
68 , 1636
ganglia , 1180

8.awk中BEGIN 和END的使用

以score.txt文件为例

[search@dbl-vm-211-13 algorithm]$ cat score.txt 
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

[search@dbl-vm-211-13 algorithm]$ cat score.awk 
#!/bin/awk -f 
BEGIN{
math=0
english=0
chinese=0
printf "name    no.     math    englishs        chineses        total\n"
printf "-------------------------------------------------------------\n"
}


{
math +=$3
english +=$4
chinese +=$5
printf "%s\t%s\t%d\t%d\t%d\t%d\n",$1,$2,$3,$4,$5,$3+$4+$5
}
END{
printf "-------------------------------------------------------------\n"
printf "   TOTAL:%10d %8d %8d\n", math,english,chinese
printf " AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, chinese/NR
}

执行结果:

[search@dbl-vm-211-13 algorithm]$ ./score.awk score.txt 
name    no.     math    englishs        chineses        total
-------------------------------------------------------------
Marry   2143    78      84      77      239
Jack    2321    66      78      45      189
Tom     2122    48      77      71      196
Mike    2537    87      97      95      279
Bob     2415    40      57      62      159
-------------------------------------------------------------
   TOTAL:       319      393      350
 AVERAGE:     63.80    78.60    70.00

9.与环境变量交互,就是把环境变量的值作为参数传进awk中

使用-v参数即可

[search@dbl-vm-211-13 algorithm]$ awk '{print $3}' score.txt 
78
66
48
87
40

[search@dbl-vm-211-13 algorithm]$ export x=10
[search@dbl-vm-211-13 algorithm]$ awk -v val=$x '{print $3+val}' score.txt 
88
76
58
97
50

10.几个不常用的用法

10.1根据每行内容长度,选择输出

[search@dbl-vm-211-13 algorithm]$ awk 'length > 88 {print $6}' netstat.txt  
12138

从文件中找出大于88的行。

[search@dbl-vm-211-13 algorithm]$ awk 'length > 88' netstat.txt            
unix  2      [ ]         DGRAM                    12138  @/org/freedesktop/hal/udev_event

10.2 按照链接数查看客户端ip 

先查看所有的tcp udp 的链接情况,

[search@CJ-0140 ~]$ netstat -antu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:8139                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:12683               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:13452               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:45678               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:13332               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:33333               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:20277               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:33334               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:11582               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:11583               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:13442               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:10277               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:13222               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:12008               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:8649                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:11050               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:3914                0.0.0.0:*                   LISTEN      
tcp        0      0 42.62.37.149:21961          202.104.143.5:80            ESTABLISHED 
tcp        0      0 42.62.37.149:21956          202.104.143.5:80            ESTABLISHED 
tcp        0      0 127.0.0.1:42992             127.0.0.1:13222             ESTABLISHED 
tcp        0      0 127.0.0.1:8495              127.0.0.1:9993              ESTABLISHED 

取出远程链接ip和端口

[search@CJ-0140 ~]$ netstat -antu |awk '{print $5}'
and
Address
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
202.104.143.5:80
127.0.0.1:13222
127.0.0.1:9993
202.104.143.5:80
202.104.143.5:80

获取ip

[search@CJ-0140 ~]$ netstat -antu |awk '{print $5}' |cut -d: -f1
and
Address
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
10.10.192.50
127.0.0.1
127.0.0.1
202.104.143.5
202.104.143.5

先排序

[search@CJ-0140 ~]$ netstat -antu |awk '{print $5}' |cut -d: -f1|sort

0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
10.10.0.100
10.10.0.100
10.10.0.100
10.10.0.100
10.10.0.100
10.10.0.100
10.10.0.100
10.10.0.100
10.10.0.100
10.10.0.100
10.100.100.121
10.10.192.11
10.10.192.175

去重并计数

[search@CJ-0140 ~]$ netstat -antu |awk '{print $5}' |cut -d: -f1|sort|uniq -c
     23 
     37 0.0.0.0
     10 10.10.0.100
      1 10.100.100.121
      1 10.10.192.11
      1 10.10.192.175
      1 10.10.192.30
      1 10.10.192.84
      1 10.10.64.172
     32 127.0.0.1
     24 202.104.143.5
      1 Address
      1 and

按链接数排序,sort默认按照第一列排序

[search@CJ-0140 ~]$ netstat -antu |awk '{print $5}' |cut -d: -f1|sort|uniq -c|sort -nr
     37 0.0.0.0
     32 127.0.0.1
     24 202.104.143.5
     23 
     10 10.10.0.100
      3 10.10.192.50
      1 and
      1 Address
      1 10.10.64.172
      1 10.10.192.84
      1 10.10.192.30
      1 10.10.192.175
      1 10.10.192.11
      1 10.100.100.121

10.3打印99乘法表

[search@CJ-0140 ~]$ seq --help
Usage: seq [OPTION]... LAST
  or:  seq [OPTION]... FIRST LAST
  or:  seq [OPTION]... FIRST INCREMENT LAST
Print numbers from FIRST to LAST, in steps of INCREMENT.

[search@CJ-0140 ~]$ seq 9
1
2
3
4
5
6
7
8
9
[search@CJ-0140 ~]$ seq 1 2 9
1
3
5
7
9

[search@CJ-0140 ~]$ seq 3 |sed 'H;'
1
2
3
[search@CJ-0140 ~]$ seq 3 |sed 'H;g'


1


1
2


1
2
3

[search@CJ-0140 ~]$ seq 9 |sed 'H;g'|awk '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}' RS=''
1x1=1
1x2=2   2x2=4
1x3=3   2x3=6   3x3=9
1x4=4   2x4=8   3x4=12  4x4=16
1x5=5   2x5=10  3x5=15  4x5=20  5x5=25
1x6=6   2x6=12  3x6=18  4x6=24  5x6=30  6x6=36
1x7=7   2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49
1x8=8   2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64
1x9=9   2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81

NF表示列数,NR表示行数 

RS表示输入记录的分隔符,默认为换行符,现在改为空格。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值