netstat -tnl查看所有被占用的端口
netstat -pan 查看所用被占用端口的详细信息,最后一行是被占用的端口的pid
获得pid后就可以用kill命令杀死该进程了
十一、条件语句
格式:
{if(表达式) {语句1;语句2;...}}
{if(表达式){语句1; 语句2...} else {语句1; 语句2;...}}
{if(表达式1){语句1; 语句2...} else if (表达式2){语句1; 语句2;..} else if (表达式2){语句1; 语句2;..} else if (表达式2){语句1; 语句2;..} ... else{语句1; 语句2... }}
注意:if语句是操作必须用花括号括起来。
十二、循环
1.while循环
{while(表达式) {语句1;语句2;...}}
{do{语句1;语句2;...}while(表达式)}
例:
awk '{i = 1; while(i <= NF) {print NF, $i; i++}}' test_awk.txt
注意:i的起始值应从1开始,因为i=0时,$i = $0代表一整行。
2.for循环
例:
awk '{for(i = 1; i < NF; i++) {print $i}}' test_awk.txt
3.循环控制
continue跳出内循环,break跳出外循环
十三、程序控制语句
1.next语句
next语句从输入文件中取出下一行输入,然后从awk的顶部继续执行。
例:
awk '{if($1 ~ /ABC/){next} else{print}}' test_awk.txt #abc def hic lmn abc #123 456 1.23 4.5 321 #You are a good boy #That's a very lovely dog
八、变量
1.数值变量和字符串变量
数值数字可以是整数、浮点数和科学计数法表示的数(如:.723E-1, 3.4e7),字符串则扩在双引号中。
初始化:只要在awk程序中被提到,变量就开始存在,变量可以是一个字符串或一个数字,也可以即是字符串又是数字。变量被设置后就会变成与等号右边那个表达式相同的类型。未经初始化的变量时0或“”
强制类型转换:如果把一个字符串强制转换成数字,方法为:变量名+0;如果要把一个数字转化为字符串方法为:变量名 ""(变量名后跟一个空格和一个空字符串);
2.用户自定义变量
变量名可以是字母,数字和下划线,但不能以数字开头。不用声明变量类型,awk会自动判断。如果变量为初始化,awk会将字符串初变量始化为空字符串,数值变量初始化0;
3.字段变量
新的字段可以通过赋值来创建,字段变量引用的字段如果没有值责备赋值为空串,字段的值发生变化时,awk会以OFS
的值作为字段分隔符重新计算$0变量的值,字段数目最多限制在100以内。
例:awk '{$5 = $3 * 1000 / 2 ; print}" filename
说明:如果不存在第五个字段($5),awk会创建它并将$3 * 1000 / 2的值赋给它,如果存在第五个字段,awk直接将表达式的值赋给它,替换掉原来的内容。
七、比较表达式
1.关系运算符
运算符 |
描述 |
---|---|
赋值运算符 |
|
= += -= *= /= %= ^= **= |
赋值语句 |
逻辑运算符 |
|
|| |
逻辑或 |
&& |
逻辑与 |
正则运算符 |
|
~ ~! |
匹配正则表达式和不匹配正则表达式 |
关系运算符 |
|
< <= > >= != == |
关系运算符 |
算术运算符 |
|
+ - |
加,减 |
* / & |
乘,除与求余 |
+ - ! |
一元加,减和逻辑非 |
^ *** |
求幂 |
++ -- |
增加或减少,作为前缀或后缀 |
其它运算符 |
|
$ |
字段引用 |
空格 |
字符串连接符 |
?: |
C条件表达式 |
in |
数组中是否存在某键值 |
五.文件中的awk命令
如果awk命令别写到文件里,就要用-f选项指定awk的文件名。后面再加所要处理的输入文件的文件名。awk从缓冲区读入一条记录,接着测试awk文件中的每一条命令,如后对读入的记录执行命令。处理完一条记录后,awk将其丢弃,接着将下一条记录读入缓冲区,依次处理所有记录。
cat test_awk.txt
abc def hic lmn abc
123 456 1.23 4.5 321
ABC Def hIc lmN ABC
ABC Def cih lmN dsf
You are a good boy
That's a very lovely dog
cat shell.awk
/^ABC/{print "hello world "}
{print $1, $3}
例:
awk -f shell.awk test_awk.txt #abc hic #123 1.23 #hello world #ABC cih #hello world #ABC hIc #You a #That's very
说明:awk将第一条记录读入缓冲区,用shell.awk中的命令去处理,首先检查这条记录是不是以ABC开头,如果不是则继续对该条记录执行第二条命令,即打印第一和第三个字段。如果是以ABC开头的,则打印'hello world'和一个换行,然后再执行第二条命令打印第一和第三个字段。执行完第一条记录后,将其丢弃,然后读入第二条记录,执行上述操作。直到所有记录都处理完毕。