zoukankan      html  css  js  c++  java
  • awk常用命令

    1.统计TCP的连接数量,其中LISTEN多少个,ESTABLISHED多少个。
    [root@heiniao ~]# netstat -ant
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 192.168.1.251:12000 0.0.0.0:* LISTEN
    tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN
    tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
    tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
    tcp 0 0 0.0.0.0:1013 0.0.0.0:* LISTEN
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
    tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
    tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
    tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN
    tcp 0 0 192.168.1.251:22 192.168.1.17:3321 ESTABLISHED
    tcp 0 248 192.168.1.251:22 192.168.1.17:62916 ESTABLISHED
    tcp 0 0 192.168.1.251:22 192.168.1.17:62903 TIME_WAIT
    tcp 0 0 :::22 :::* LISTEN
     
    完整命令:netstat -ant | awk '/^tcp/{STATE[$NF]++}END{for(S in STATE) {print S,STATE[S]}}'
     
    解释:在这句awk语句里面,STATE就是我们建立的数组的名称,它的下标非常独特,它可以是LISTEN,如STATE[$NF]====>STATE[LISTEN],而STATE[$NF]++======>1,每次读一行+1最后就统计出来了LISTEN有多少个,而最后for(S in STATE)中的S就代表的是LISTEN和ESTABLISHED,而STATE[S]代表的就是一共多少次,所以最后显示出来的结果如下:
    [root@heiniao ~]# netstat -ant | awk '/^tcp/{STATE[$NF]++}END{for(S in STATE) {print S,STATE[S]}}'
    ESTABLISHED 2
    LISTEN 10
     
    2.统计某日志文件中IP地址的访问量
    awk '{counts[$1]++}END{for(ip in counts){printf "%-20s:%d ",ip,counts[ip]}}' /var/log/httpd/access_log
     
     
    3.对磁盘使用率超过百分之80的做处理
    df -h | awk -F[%] '/^/dev/{print $1}' | awk '{if($NF>=80) print $1}'
     
     
     
     
    #删除temp文件的重复行
    02.awk '!($0 in array) { array[$0]; print }' temp
    03.
    04.#查看最长使用的10个unix命令
    05.awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -rn | head -n 10
    06.
    07.#查看机器的ip列表
    08.ifconfig -a | awk '/Bcast/{print $2}' | cut -c 5-19
    09.
    10.#查看机器的每个远程链接机器的连接数
    11.netstat -antu | awk '$5 ~ /[0-9]:/{split($5, a, ":"); ips[a[1]]++} END {for (ip in ips) print ips[ip], ip | "sort -k1 -nr"}'
    12.
    13.#查看某个进程打开的socket数量
    14.ps aux | grep [process] | awk '{print $2}' | xargs -I % ls /proc/%/fd | wc -l
    15.
    16.
    17.#查看无线网络的ip
    18.sudo ifconfig wlan0 | grep inet | awk 'NR==1 {print $2}' | cut -c 6-
    19.
    20.#批量重命名文件
    21.find . -name '*.jpg' | awk 'BEGIN{ a=0 }{ printf "mv %s name%01d.jpg ", $0, a++ }' | bash
    22.
    23.#查看某个用户打开的文件句柄列表
    24.for x in `ps -u 500 u | grep java | awk '{ print $2 }'`;do ls /proc/$x/fd|wc -l;done
    25.
    26.#计算文件temp的第一列的值的和
    27.awk '{s+=$1}END{print s}' temp
    28.
    29.#查看最常用的命令和使用次数
    30.history | awk '{if ($2 == "sudo") a[$3]++; else a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
    31.
    32.#查找某个时间戳的文件列表
    33.cp -p `ls -l | awk '/Apr 14/ {print $NF}'` /usr/users/backup_dir
    34.
    35.#格式化输出当前的进程信息
    36.ps -ef | awk -v OFS=" " '{ for (i=8;i<=NF;i++) line = (line ? line FS : "") $i; print NR ":", $1, $2, $7, line, ""; line = "" }'
    37.
    38.#查看输入数据的特定位置的单个字符
    39.echo "abcdefg"|awk 'BEGIN {FS="''"} {print $2}'
    40.
    41.#打印行号
    42.ls | awk '{print NR " " $0}'
    43.
    44.#打印当前的ssh 客户端
    45.netstat -tn | awk '($4 ~ /:22s*/) && ($6 ~ /^EST/) {print substr($5, 0, index($5,":"))}'
    46.
    47.#打印文件第一列不同值的行
    48.awk '!array[$1]++' file.txt
    49.
    50.#打印第二列唯一值
    51.awk '{ a[$2]++ } END { for (b in a) { print b } }' file
    52.
    53.#查看系统所有分区
    54.awk '{if ($NF ~ "^[a-zA-Z].*[0-9]$" && $NF !~ "c[0-9]+d[0-9]+$" && $NF !~ "^loop.*") print "/dev/"$NF}' /proc/partitions
    55.
    56.#查看2到1000所有质数
    57.for num in `seq 2 1000`;do if [ `factor $num|awk '{print $2}'` == $num ];then echo -n "$num ";fi done;echo
    58.
    59.#查看第3到第6行
    60.awk 'NR >= 3 && NR <= 6' /path/to/file
    61.
    62.#逆序查看文件
    63.awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' /etc/passwd
    64.
    65.#打印99乘法表
    66.seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?" ":" ")}'
     
    67.统计一个文件有多少空行
    awk '/^ *$/ {x=x+1;} END {print x}' abc.txt
  • 相关阅读:
    Fix Installing .NET Framework 3.5 failed Error Code 0x800F0954 on Windows 10
    RHEL8安装五笔输入法
    Enable EPEL and Local Repository on RHEL8
    Why is Yum Replaced by DNF?
    检查Linux服务器是否被攻击的常用命令及方法
    IDEA 主题
    IDEA 如何显示一个类中所有的方法
    Appium 安装以及安装过程中遇到的问题
    Maven 如何发布 jar 包到 Nexus 私库
    java泛型的基本使用
  • 原文地址:https://www.cnblogs.com/steven9898/p/11348724.html
Copyright © 2011-2022 走看看