awk命令使用手记

1.基本用法:

cat ljm.txt |awk -F '|' '{if($1==0) print($o)}'

↑    将ljm.txt 按 | 分隔(多个分隔符使用[],写在里面) 第一列为0的行 打印

2.逻辑运算符&&、 || 、!

cat ljm.txt |awk -F '|' '{if($1==0&&$2==1||$3!=1) print($o)}'

3.文件名,行号,字段个数,完整内容:

awk -F ':' '{print "文件名:" FILENAME ",行数:" NR ",列数:" NF ",整行内容:"$0}'  ljm.txt

4.正则表达过滤

cat ljm.txt  |awk -F '|' '{ ct+=1}{if($1~/^[0-9]+$/) print($o)}' 

↑    ^表示此后内容作为开头、[0-9]表示一个0到9之间的数字、+表示0至多个不限个数、$表示此前内容作为结尾,即取第一列整数的行

cat ljm.txt  |awk -F '|' '{ ct+=1}{if($1~/^[0-9]+\.[0-9][0-9]+$/) print($o)}' |wc -l

↑取第一列精确到两位小数以上的行

awk -F '|' '{if($8~/^99/) print$8}' 第八个字段以99开头

awk -F '|' '{if($8~/.*99.*/) print$8}' 第八个字段带99

awk -F '|' '{if($8~/99$/) print$8}' 第八个字段以99结束

5.取最大值

取字段最小值

more ljm.txt|awk -F '|'  'NR==1{min=$3;next}{min=min<$3?min:$3}END{print min}'

取字段最大值

more ljm.txt|awk -F '|' 'NR==1{max=$3;next}{max=max>$3?max:$3}END{print max}'

6.保留唯一值

| awk -F '|' '{a[$1]++;} END{for(i in a) {if( a[i]>1 )printi" "a[i]}}'   

7.某一列求和

|awk -F 'M' '{sum+=$1} END {print "Sum = ", sum}'

统计非空行数

awk 'BEGIN {count=0} $0 !~ /^$/ {count += 1} END {print "Not empty line count " count}'

目录下文件大小总和

ls -l | awk 'BEGIN {size=0} {size+=$5} END {print "Size is " size}'

8.操作进程

ps -A -o stat,ppid,pid,cmd |grep -e '^[Zz]' |awk '{print$2}'|xargs -i kill -9 {}

杀死僵尸进程

ps -A -o stat,ppid,pid,cmd |grep -e '^[T]' |awk '{print$2}'|xargs -i kill -9 {}

你可能感兴趣的:(awk命令使用手记)