awk的内置命令

 

 

1、插入几个新字段。在“a b c d”的第三列插入“s h”,使之成为“a b s h c d”

echo "a b c d"| awk '{$2=$2" s h";print}'

2、获取ip地址

  方法一:

ifconfig | awk '/broadcast/{print $0}'| awk '{printf $2}'

  方法二:

  awk默认每一行是一条记录,RS是每条记录的分割符。RS=“”,表示一个段落是一条数据,无论这个锻炼有几行数据。可以使用BEGIN模块来修改内置变量。BEGIN在awk读取文件之前就执行。

 

 

#第一条记录的第六列数据
ifconfig | awk 'BEGIN {RS=""}NR==1{print  $6}'  

 

 

3、格式化空白,移除每行的前缀、后缀空白,将各个部分对其

原始文件

              aa    ni                    hao
 bb      adb        99999           89
                cc     35

整理好的文件

aa     ni      hao
bb     adb     99999      89
cc     35
awk 'BEGIN{OFS="\t"}{$1=$1;print}'  txt 

4、输出文件中的空行数

  方法一:grep

grep  -c "^$"  源文件 

  方法二:

awk '/^$/{a=a+1}{print $0}END{print a}'  源文件

5、以:为分隔符,区域3大于5的记录有多少条

awk  -F ":" '$3>5{a=a+1} END {print a}' file

6、根据字段去重

原始数据如下,去除重复的uid

2020-01-01:index?uid=101
2020-02-21:index?uid=103
2020-11-21:index?uid=101
2020-01-09:index?uid=103
2020-11-01:index?uid=107

awk -F "?" '{arr[$2]=arr[$2]+1;if(arr[$2]==1) {print}}'  源数据

 

 7、次数统计

 

 8、统计tcp的连接状态次数