MST

星途 面试题库

面试题:Bash中awk的复杂条件处理

给定一个日志文件log.txt,每行格式为'时间戳 访问IP 状态码',例如'2023 - 10 - 01 12:00:00 192.168.1.1 200'。请使用awk统计出状态码为404的访问IP出现的次数,并按次数从高到低输出IP和对应的次数。
50.5万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
awk '$3 == 404 {ips[$2]++} END {for (ip in ips) {print ips[ip], ip}}' log.txt | sort -nr

上述命令解释如下:

  1. awk '$3 == 404 {ips[$2]++}':遍历log.txt文件每一行,当第三列(状态码)为404时,将对应的第二列(访问IP)作为数组ips的索引,并将其值加1。
  2. END {for (ip in ips) {print ips[ip], ip}}:在处理完所有行后,遍历ips数组,输出每个IP出现的次数以及对应的IP。
  3. sort -nr:对前面awk输出的结果按第一列(出现次数)进行逆序(从高到低)排序。