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的连接状态次数