linux awk 命令

alt

对今天解决不了的事情,也不要着急。因为明天也可能还是解决不了。

awk命令例子:

1
2
3
4
5
6
打印文件的第一列(域)  awk '{print $1}' filename
打印文件的前两列(域) awk '{print $1,$2}' filename
打印完第一列,然后打印第二列 awk '{print $1 $2}' filename
打印文本文件的总行数 awk 'END{print NR}' filename
打印文本第一行 awk 'NR==1{print}' filename
打印文本第二行第一列 sed -n "2, 1p" filename | awk 'print $1'

Bash里面的赋值方法有两种,格式为

1
2
1) arg=`(命令)`
2) arg=$(命令)

想要把某一文件的总行数赋值给变量nlines,可以表达为:

1
2
3
1) nlines=`(awk 'END{print NR}' filename)`

2) nlines=$(awk 'END{print NR}' filename)

1
2
3
4
5
6
awk '/[^0-9][0-9].*Starting the backup operation/{print $1,$2}' /data/backup/logs/all.log
#181217 02:12:48
#181217 02:12:48 innobackupex: Starting the backup operation
awk '/[^0-9][0-9].*OK\!/{print $1,$2}' /data/backup/logs/all.log
#181217 03:51:21
#181217 03:51:21 completed OK!

时间相减

1
awk 'BEGIN{tstamp1=mktime("2108 12 18 02 12 48");tstamp2=mktime("2018 12 19 03 51 12");print tstamp2-tstamp1;}'

从库周期性延迟 需要你从binlog中找出找个binlog 各种操作的统计

1
mysqlbinlog --no-defaults --base64-output='decode-rows' -v -v mysql-bin.004177 | awk '/UPDATE|INSERT|DELETE/{gsub("###","");gsub("INSERT.*INTO","INSERT");gsub("DELETE.*FROM","DELETE");count[$1" "$2]++}END{for(i in count)print i,"\t",count[i]}' |sort -k3nr|head -n 20

netstat and AWK

1
2
3
4
5
6
7
8
9
netstat -an | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a,S[a]}'
netstat -an | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c

netstat -anlp | grep 3306 | grep tcp | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | head -n20
netstat -ant | awk '/:3306/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}' | sort -nr | head -n20

netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
tcpdump -i eno16777736 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | head -20

查看表的大小排序

1
2
du -s *|grep ibd|sort|uniq -u|sort -nr|awk '{print $2}'|xargs du -sh
du -s *|grep ibd|sort|uniq -u|sort -nr|awk '{print $2}'|sort|uniq -u|xargs du -sh

僵尸进程

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

-------------本文结束感谢您的阅读-------------

本文标题:linux awk 命令

文章作者:Wang Jiemin

发布时间:2019年04月22日 - 12:04

最后更新:2019年04月22日 - 14:04

原始链接:https://jiemin.wang/2019/04/22/linux-awk/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%