应急响应常用命令

应急响应常用命令

Find

find 是 Linux 中非常强大且常用的命令行工具,用于在目录树中查找文件或目录。它支持按文件名、类型、时间、权限、大小等多种条件查找。

find 基本语法:

find [查找路径] [查找条件] [查找动作]

常用示例:

1. 按文件名查找

find /path/to/dir -name "filename.txt"

精确匹配文件名(区分大小写)

find . -iname "readme.md"

不区分大小写查找 readme.md 文件


2. 查找目录

find . -type d -name "log"

查找当前目录下名为 log 的目录


3. 查找普通文件

find /etc -type f -name "*.conf"

查找 /etc 下所有以 .conf 结尾的配置文件


4. 按修改时间查找

find . -mtime -3

查找3天内修改过的文件(-mtime 单位是天)

find . -mmin -30

查找30分钟内修改的文件


5. 按文件大小查找

find . -size +100M

查找大于 100MB 的文件

find . -size -1k

查找小于 1KB 的文件


6. 按权限查找

find / -perm 777

查找权限为 777 的文件(所有人可读写执行)


7. 查找后执行操作(如删除)

find . -name "*.tmp" -delete

查找并删除所有 .tmp 文件

find /var/log -type f -name "*.log" -exec rm {} \;

查找 .log 文件并执行 rm 删除命令,{} 表示匹配到的文件


8. 结合正则查找

find . -regex ".*\.\(txt\|log\)"

使用正则查找 .txt.log 文件(注意 -regex 默认匹配完整路径)


提示:

  • . 表示当前目录

  • 可以用 -maxdepth N 限制查找深度

  • 可以结合 grep 使用,例如:

    find . -type f -name "*.php" | xargs grep "password"
    

WC

wc 是 Linux 中的一个命令,代表 "word count"(字数计数),它用于统计文件或标准输入中的字数、行数、字节数等。wc 是一个非常常用的工具,尤其在处理文本文件时,它可以帮助我们快速获取文件的统计信息。

基本语法:

wc [选项] [文件...]

常见选项:

  • -l:统计行数。
  • -w:统计单词数。
  • -c:统计字节数(包括文件的所有字符)。
  • -m:统计字符数(和字节数类似,但考虑字符的编码,尤其在多字节字符集如 UTF-8 中有差异)。
  • -L:统计最长一行的字符数。

常见用法示例:

1. 统计行数-l

wc -l file.txt
  • 作用:输出 file.txt 文件的总行数。

示例输出

100 file.txt

这表示 file.txt 中有 100 行。

2. 统计单词数-w

wc -w file.txt
  • 作用:输出 file.txt 中的单词数量。一个单词是由空格、换行符或其他分隔符分开的。

示例输出

500 file.txt

这表示 file.txt 中有 500 个单词。

3. 统计字节数-c

wc -c file.txt
  • 作用:输出 file.txt 的字节数,包括所有字符。

示例输出

1024 file.txt

这表示 file.txt 中的内容占用了 1024 字节。

4. 统计字符数-m

wc -m file.txt
  • 作用:输出 file.txt 的字符数。与字节数类似,但在多字节字符编码下有所不同。

示例输出

1120 file.txt

这表示 file.txt 中的字符数为 1120。字符数和字节数的区别主要在于文件内容的编码。

5. 统计最长行的长度-L

wc -L file.txt
  • 作用:输出 file.txt 中最长一行的字符数。

示例输出

120

这表示 file.txt 中最长的行有 120 个字符。

6. 同时显示多个统计信息

wc -l -w -c file.txt
  • 作用:统计文件的行数、单词数和字节数,并一起显示。

示例输出

100 500 1024 file.txt

这表示 file.txt 中有 100 行,500 个单词,占用了 1024 字节。

7. 对标准输入进行统计

你可以使用管道将标准输入传递给 wc,例如:

echo "Hello World" | wc -w

作用:统计输入的单词数。

示例输出

2

这表示 "Hello World" 中有 2 个单词。

8. 统计多个文件

wc -l file1.txt file2.txt
  • 作用:统计 file1.txtfile2.txt 中的行数。wc 会显示每个文件的行数,以及所有文件的总行数。

示例输出

100 file1.txt
200 file2.txt
300 total

这表示 file1.txt 有 100 行,file2.txt 有 200 行,总共有 300 行。

grep

grep 是 Linux 中用于在文本文件中搜索匹配的字符串并输出的强大命令。它可以使用正则表达式来进行模式匹配,广泛应用于日志分析、文本处理、脚本编写等。

基本语法:

grep [选项] PATTERN [文件...]
  • PATTERN:要搜索的模式,可以是简单的文本字符串或正则表达式。
  • 文件:要搜索的文件。如果未指定文件,grep 会从标准输入读取数据。

常用选项:

  • -i:忽略大小写。
  • -v:反向匹配,显示不包含模式的行。
  • -r-R:递归搜索目录中的文件。
  • -l:只显示匹配模式的文件名。
  • -n:显示匹配行的行号。
  • -c:显示匹配的行数。
  • -o:只显示匹配的文本部分,而不是整行。
  • -w:匹配整个单词。
  • -x:只匹配整行。
  • -H:输出匹配行所在的文件名。
  • -A NUM:输出匹配行及其之后的 NUM 行。
  • -B NUM:输出匹配行及其之前的 NUM 行。
  • -C NUM:输出匹配行及其前后各 NUM 行。

例子:

1. 基本搜索

grep "error" logfile.txt
  • 作用:在 logfile.txt 文件中搜索包含 error 的行,并输出。

2. 忽略大小写

grep -i "error" logfile.txt
  • 作用:搜索 logfile.txt 文件中的 error(忽略大小写),匹配 ERRORError 等不同形式。

3. 显示行号

grep -n "error" logfile.txt
  • 作用:显示每个匹配行的行号,例如:

    3:error in connection
    15:error occurred
    

4. 反向匹配(显示不包含指定文本的行)

grep -v "error" logfile.txt
  • 作用:显示不包含 error 的所有行。

5. 统计匹配的行数

grep -c "error" logfile.txt
  • 作用:输出 logfile.txt 文件中匹配 error 的行数。

6. 递归搜索目录中的所有文件

grep -r "error" /var/log/
  • 作用:在 /var/log/ 目录下的所有文件中搜索 error

7. 只显示匹配的文件名

grep -l "error" *.log
  • 作用:显示当前目录下所有 .log 文件中包含 error 的文件名。

8. 只显示匹配的文本部分

grep -o "error" logfile.txt
  • 作用:只输出匹配的文本部分,而不是整行。例如,如果一行包含多个 "error",会显示多个 error

9. 匹配整个单词

grep -w "error" logfile.txt
  • 作用:仅匹配完整的单词 error,不匹配像 errorssupererror 这样的词。

10. 搜索多个模式

grep -e "error" -e "warning" logfile.txt
  • 作用:同时搜索 errorwarning

11. 显示匹配行及其上下文

  • -A NUM:显示匹配行及其后 NUM 行。

    grep -A 2 "error" logfile.txt
    
    • 作用:显示匹配 error 的行及其后两行。
  • -B NUM:显示匹配行及其前 NUM 行。

    grep -B 2 "error" logfile.txt
    
    • 作用:显示匹配 error 的行及其前两行。
  • -C NUM:显示匹配行及其前后各 NUM 行。

    grep -C 2 "error" logfile.txt
    
    • 作用:显示匹配 error 的行及其前后两行。

12. 匹配正则表达式

grep -E "erro(r|r*)" logfile.txt
  • 作用:使用扩展正则表达式(ERE),匹配 erro 后跟一个或多个 r 的字符串,例如 errorerrrrr

13. 只匹配整行

grep -x "error" logfile.txt
  • 作用:只匹配整行内容为 error 的行。

awk

awk 是一个强大的文本处理工具,常用于对文件中的数据进行操作和分析。awk 基于模式匹配,能够按列(字段)处理文件中的文本数据,非常适合用来处理结构化的文本,如日志文件、CSV 文件等。

基本语法:

awk 'pattern {action}' input_file
  • pattern:模式,awk 会搜索与该模式匹配的行。
  • action:对匹配的行执行的操作。常见的操作包括打印某些字段、计算、替换等。如果没有指定 action,则默认打印匹配行。

常见选项:

  • -F:指定字段分隔符。默认情况下,awk 使用空格或制表符作为字段分隔符,但可以通过 -F 选项指定其他分隔符。
  • -v:设置变量值,允许在 awk 脚本中传递外部变量。

字段($符号):

  • $1:第一个字段(列)。
  • $2:第二个字段(列)。
  • $0:整行文本(包括所有字段)。

常见用法:

1. 打印文件的内容

awk '{print $0}' file.txt
  • 作用:打印文件的每一行。$0 代表整行文本。

2. 打印文件中的某一列

awk '{print $1}' file.txt
  • 作用:打印文件的第一列。如果文件中有多个列,$1 表示第一个字段。
awk '{print $2}' file.txt
  • 作用:打印第二列。

3. 指定字段分隔符(例如 CSV 文件)

awk -F, '{print $1, $2}' file.csv
  • 作用:在 CSV 文件中指定逗号(,)作为字段分隔符,打印文件的前两列。

4. 条件判断

awk '$1 == "Alice" {print $2}' file.txt
  • 作用:打印第一列为 "Alice" 时的第二列。

5. 计算列的总和

awk '{sum += $1} END {print sum}' file.txt
  • 作用:对文件的第一列求和并打印总和。sum += $1 表示累加每行的第一个字段,END {print sum} 会在处理完所有行后输出结果。

6. 打印特定条件下的行

awk '$3 > 50 {print $1, $3}' file.txt
  • 作用:如果第三列的值大于 50,则打印第一列和第三列。

7. 使用正则表达式进行匹配

awk '/pattern/ {print $0}' file.txt
  • 作用:匹配包含 "pattern" 的行,并打印该行。可以使用正则表达式来匹配模式。

8. 计算文件中的列平均值

awk '{sum += $1} END {if (NR > 0) print sum / NR}' file.txt
  • 作用:计算文件第一列的平均值。NR 是记录的行数(行号),sum / NR 计算平均值。

9. 使用多个命令

awk '{print $1; print $2}' file.txt
  • 作用:打印每行的第一列和第二列。

10. awk 中使用外部变量

awk -v threshold=50 '$3 > threshold {print $1, $3}' file.txt
  • 作用:使用外部变量 threshold 来过滤第三列大于该值的行。在这个例子中,threshold 的值为 50。

11. 修改字段内容

awk '{$2="modified"; print $0}' file.txt
  • 作用:将每行的第二列修改为 "modified" 并打印整行。

12. 按分隔符处理复杂数据(例如多个分隔符)

awk -F'[: ]' '{print $1, $2}' file.txt
  • 作用:使用冒号(:)和空格( )作为字段分隔符,打印第一列和第二列。

结合管道使用:

awk 经常和其他命令(如 grep, sort, cut 等)结合使用。

示例 1:使用 grepawk 查找并处理数据:

grep "pattern" file.txt | awk '{print $1, $3}'
  • 作用:首先用 grep 查找包含 "pattern" 的行,然后用 awk 打印匹配行的第一列和第三列。

示例 2:用 awk 处理输出并排序:

awk '{print $1, $2}' file.txt | sort -k2
  • 作用:用 awk 提取第一列和第二列,然后用 sort 按第二列排序。

SSH、Apache、Nginx 日志字段对照表


SSH 日志 (/var/log/auth.log/var/log/secure)

示例行:

Oct 16 10:45:23 localhost sshd[1234]: Failed password for invalid user test from 192.168.1.2 port 55432 ssh2

字段分解(空格为分隔符)

字段 ($n) 内容 说明
$1 Oct 月份
$2 16 日期
$3 10:45:23 时间
$4 localhost 主机名
$5 sshd[1234]: 服务名+PID
$6 Failed 日志动作开始
$7 password 日志动作描述
$8 for 固定词
$9 invalid 用户状态
$10 user 固定词
$11 test 登录用户名
$12 from 固定词
$13 192.168.1.2 登录来源 IP
$14 port 固定词
$15 55432 登录端口
$16 ssh2 协议类型

💡 注意:可以用 $(NF-3) 取 IP,$(NF-5) 取用户名。


Apache 日志/var/log/apache2/access.log/var/log/httpd/access_log

常见 Combined Log Format

192.168.1.10 - - [16/Oct/2025:10:45:23 +0800] "GET /index.html HTTP/1.1" 200 1024 "http://example.com" "Mozilla/5.0 ..."
字段 ($n) 内容 说明
$1 192.168.1.10 客户端 IP
$2 - RFC 1413 用户标识(通常是 -
$3 - 用户名(通常是 -
$4 [16/Oct/2025:10:45:23 请求时间(带左括号)
$5 +0800] 时区(带右括号)
$6 "GET 请求方法(带左引号)
$7 /index.html 请求 URL
$8 HTTP/1.1" 协议版本(带右引号)
$9 200 HTTP 状态码
$10 1024 返回大小(字节)
$11 "http://example.com" Referer
$12 "Mozilla/5.0 ..." User-Agent

💡 建议用 awk -F'"' '{print $2, $6}' 可以更方便提取 请求 URLReferer/User-Agent,因为双引号把字段分开了。


Nginx 日志/var/log/nginx/access.log

格式与 Apache 类似,假设 默认 Combined Format

192.168.1.10 - - [16/Oct/2025:10:45:23 +0800] "GET /index.html HTTP/1.1" 200 512 "-" "Mozilla/5.0 ..."
字段 ($n) 内容 说明
$1 192.168.1.10 客户端 IP
$2 - RFC 1413 用户标识
$3 - 用户名
$4 [16/Oct/2025:10:45:23 请求时间
$5 +0800] 时区
$6 "GET 请求方法
$7 /index.html 请求 URL
$8 HTTP/1.1" 协议版本
$9 200 状态码
$10 512 返回大小
$11 "-" Referer(可能是 "-")
$12 "Mozilla/5.0 ..." User-Agent

💡 同样建议用 -F'"' 分隔字符串,然后按需要提取字段。

实用 awk 提取技巧

SSH 示例:取用户名 + IP

awk '/Failed password/ {print $(NF-5), $(NF-3)}' /var/log/auth.log

Apache/Nginx 示例:提取请求方法 + URL + 状态码

awk -F'"' '{print $2, $3}' /var/log/nginx/access.log
  • $2 = "GET /index.html HTTP/1.1"
  • $3 = 200 512 "-" "User-Agent"
    然后可用 awk 再切分 $2,比如:
awk -F'"' '{split($2,a," "); print a[1], a[2], $3}' /var/log/nginx/access.log
  • a[1] = GET
  • a[2] = /index.html
  • $3 包含状态码和大小

sort

sort 是 Linux 中用于对文本行进行排序的命令。它非常强大,支持多种排序方式,适用于按字母、数字、日期等方式对文本数据进行排序。

基本语法:

sort [选项] [文件...]
  • 文件:要排序的文件。如果没有指定文件,sort 将从标准输入(通常是终端)读取数据。

常用选项:

  • -n:按数值大小排序(默认按字典顺序排序)。
  • -r:按降序排序(默认按升序排序)。
  • -k:指定排序的列(字段)。
  • -t:指定字段分隔符,默认是空格或制表符。
  • -u:删除重复的行,只保留唯一的行。
  • -b:忽略行首的空格。
  • -f:忽略大小写进行排序。
  • -M:按月份排序(适用于包含月份名的日期格式)。
  • -T:指定临时文件的存储位置。

常见用法:

1. 按字典顺序排序(升序)

sort file.txt
  • 作用:按字母(字典顺序)对 file.txt 文件中的行进行升序排序。

2. 按数值排序

sort -n file.txt
  • 作用:按照数值的大小对 file.txt 文件中的行进行排序,而不是字母顺序。

3. 按降序排序

sort -r file.txt
  • 作用:按降序对文件进行排序(默认是升序排序)。

4. 按列排序

假设 file.txt 文件内容如下:

John 50
Alice 25
Bob 30
  • 按第二列(年龄)排序
sort -k2 file.txt
  • 作用:根据文件的第二列(年龄)对行进行升序排序。

5. 指定分隔符进行排序

假设 file.csv 文件内容如下:

John,50
Alice,25
Bob,30
  • 按逗号分隔并根据第二列排序
sort -t',' -k2 file.csv
  • 作用:指定逗号(,)作为字段分隔符,然后根据第二列进行排序。

6. 按降序排序并去重

sort -r -u file.txt
  • 作用:按降序排序,并去除重复的行,只保留唯一的行。

7. 忽略大小写排序

sort -f file.txt
  • 作用:忽略大小写进行排序。例如,appleApple 会被视为相同。

8. 按月份排序

假设 file.txt 文件内容如下:

Jan 10
Feb 5
Mar 20
  • 按月份排序
sort -M file.txt
  • 作用:根据月份名称(如 Jan, Feb, Mar)进行排序。

9. 按照多个列进行排序

假设 file.txt 文件内容如下:

John 50
Alice 30
Alice 25
Bob 30
  • 先按第二列(年龄)升序,再按第一列(名字)升序排序
sort -k2 -k1 file.txt
  • 作用:首先根据第二列(年龄)升序排序,如果年龄相同,再根据第一列(名字)升序排序。

10. 排序并输出到另一个文件

sort file.txt > sorted_file.txt
  • 作用:将 file.txt 排序后的结果输出到 sorted_file.txt 文件中。

11. 删除重复行

sort -u file.txt
  • 作用:排序并去除重复的行。

示例:

假设 file.txt 内容如下:

3
5
1
2
4
  • 按数字升序排序

    sort -n file.txt
    

    输出

    1
    2
    3
    4
    5
    
  • 按数字降序排序

    sort -n -r file.txt
    

    输出

    5
    4
    3
    2
    1
    

uniq

uniq 是 Linux 中的一个命令,用于删除文件中的重复行,并且可以对输入进行统计、排序等操作。通常,uniq 命令与 sort 命令一起使用,以便在排序的文本中去除重复行。

基本语法:

uniq [选项] [输入文件] [输出文件]
  • 输入文件:默认从标准输入读取,或指定输入文件。
  • 输出文件:默认将结果输出到标准输出,也可以重定向到文件中。

常见选项:

  • -c:显示每行重复出现的次数。
  • -d:只显示重复出现的行。
  • -u:只显示唯一的、不重复的行。
  • -i:忽略大小写,进行不区分大小写的比较。
  • -w N:比较前 N 个字符。
  • -f N:忽略每行前 N 个字段。
  • -s N:忽略每行前 N 个字符(按字符跳过)。

常见用法:

1. 去除重复行

uniq file.txt
  • 作用:显示 file.txt 文件中不重复的行,连续相同的行只保留一个。

2. 统计每行出现的次数

uniq -c file.txt
  • 作用:显示 file.txt 文件中每行的出现次数。每个重复的行会在前面显示出现次数。

示例输出

  3 apple
  2 banana
  1 orange

这表示 apple 出现了 3 次,banana 出现了 2 次,orange 出现了 1 次。

3. 只显示重复的行

uniq -d file.txt
  • 作用:仅显示在 file.txt 文件中重复出现的行。

示例输出

apple
banana

这表示 applebanana 是重复的行。

4. 只显示唯一的行(不重复的行)

uniq -u file.txt
  • 作用:显示 file.txt 文件中唯一的、不重复的行。

示例输出

orange

这表示 orange 是唯一的、不重复的行。

5. 忽略大小写进行比较

uniq -i file.txt
  • 作用:忽略大小写,去除重复的行。例如,appleAPPLE 被视为相同的行。

6. 指定比较字段

uniq -f 2 file.txt
  • 作用:忽略每行的前两个字段,只比较后面的字段。例如,如果每行包含多个字段(如空格分隔的字段),可以指定 -f 选项来跳过前 N 个字段进行比较。

7. 指定比较字符数

uniq -w 5 file.txt
  • 作用:仅比较每行前 5 个字符,忽略其余字符进行去重。

8. sort 配合使用

为了确保 uniq 去重有效,通常会先使用 sort 排序文本文件,然后再使用 uniq 去除重复行:

sort file.txt | uniq
  • 作用:首先使用 sort 将文件按字典顺序排序,然后使用 uniq 去除重复行。

9. 去重并输出到文件

uniq file.txt > unique_file.txt
  • 作用:去重 file.txt 中的重复行,并将结果输出到 unique_file.txt 文件中。

示例:

假设 file.txt 内容如下:

apple
banana
apple
orange
banana
grape
apple
  • 去除重复行

    uniq file.txt
    

    输出

    apple
    banana
    orange
    grape
    
  • 统计每行出现的次数

    uniq -c file.txt
    

    输出

    3 apple
    2 banana
    1 orange
    1 grape
    
  • 只显示重复的行

    uniq -d file.txt
    

    输出

    apple
    banana
    
  • 只显示唯一的行(不重复的行)

    uniq -u file.txt
    

    输出

    orange
    grape
    

uniq sort awk grep用法的组合使用

在应急响应中,经常会使用 uniqsortawkgrep 等命令来处理日志文件、统计数据、过滤和分析信息。这些命令各有独特的功能,组合使用可以实现更强大的数据处理和分析。以下是一些常见的命令组合,用于日志分析和数据筛选:

1. 结合 sortuniq 统计重复行

这两个命令结合使用,常用于去除重复行,并计算每行出现的次数。

  • 示例:统计 Apache 访问日志中每个 IP 地址的访问次数。

    cat access.log | sort | uniq -c | sort -nr
    
  • 解释

    • sort:将 access.log 中的行排序。
    • uniq -c:对排序后的结果进行去重,并统计每个 IP 地址的出现次数。
    • sort -nr:按降序排列输出结果,显示访问次数最多的 IP 地址。

2. 结合 grepsort 筛选并排序

grep 用于过滤数据,sort 用于排序,可以很方便地筛选并排序日志文件。

  • 示例:显示包含 error 的行并按日期排序。

    grep "error" access.log | sort
    
  • 解释

    • grep "error":筛选出包含 error 的所有行。
    • sort:按字典顺序对筛选出的行进行排序。

3. 结合 awksort 按列排序

awk 用于提取并处理字段,sort 用于按某一列排序。

  • 示例:按第一个字段(IP 地址)进行排序并显示 IP 和请求次数。

    awk '{print $1}' access.log | sort | uniq -c | sort -nr
    
  • 解释

    • awk '{print $1}':提取 access.log 文件中的第一列(IP 地址)。
    • sort:对 IP 地址进行排序。
    • uniq -c:统计每个 IP 地址出现的次数。
    • sort -nr:按出现次数进行降序排序。

4. 结合 grepawk 过滤并处理日志

grep 用于快速过滤出相关内容,awk 用于进一步分析并处理数据。

  • 示例:提取所有失败的登录尝试并显示 IP 地址和用户名。

    grep "Failed password" /var/log/auth.log | awk '{print $1, $2, $3, $11}'
    
  • 解释

    • grep "Failed password":筛选出包含 Failed password 的日志行。
    • awk '{print $1, $2, $3, $11}':显示日志行的前 3 个字段(日期、时间和主机名)和第 11 个字段(用户名)。

5. 结合 grepsort 排序后去重

grep 用于过滤,sortuniq 结合使用来去重并按顺序输出。

  • 示例:查找所有请求的 URL,并按照字母顺序去重和排序。

    grep -oP 'GET \K\S+' access.log | sort | uniq
    
  • 解释

    • grep -oP 'GET \K\S+':使用 grep 和 Perl 正则表达式(-P)提取所有 GET 请求后的 URL 部分。
    • sort:对 URL 进行排序。
    • uniq:去重,确保每个 URL 只出现一次。

6. 结合 awkgrep 用于统计特定条件的数据

awk 用于过滤特定条件的数据,grep 用于更精细的文本搜索。

  • 示例:查找访问次数最多的 URL,并显示访问的次数。

    grep "GET" access.log | awk '{print $7}' | sort | uniq -c | sort -nr
    
  • 解释

    • grep "GET":筛选出所有 GET 请求。
    • awk '{print $7}':提取日志的第七列(即 URL)。
    • sort:排序。
    • uniq -c:统计每个 URL 的访问次数。
    • sort -nr:按访问次数降序排列。

7. 结合 awkgrepsort 筛选并按条件排序

可以结合多个命令,首先过滤、然后处理字段并排序。

  • 示例:找出所有 HTTP 404 错误的请求,并按 IP 地址和状态码排序。

    grep "404" access.log | awk '{print $1, $9}' | sort
    
  • 解释

    • grep "404":筛选出所有 HTTP 404 错误的请求。
    • awk '{print $1, $9}':提取 IP 地址(第一列)和 HTTP 状态码(第九列)。
    • sort:按 IP 地址和状态码进行排序。

8. 结合 awksort 进行统计和排序

awksort 常用于提取某些字段进行统计后排序。

  • 示例:计算每个 IP 地址访问的总字节数,并按降序排序。

    awk '{print $1, $10}' access.log | sort | uniq -c | sort -nr
    
  • 解释

    • awk '{print $1, $10}':提取每行的 IP 地址(第一列)和字节数(第十列)。
    • sort:排序,按 IP 地址和字节数。
    • uniq -c:统计每个 IP 地址的访问次数。
    • sort -nr:按降序排序,显示访问最多的 IP 地址和它们的字节数。

9. 结合 sortuniqawk 查找访问频次最高的请求方法

  • 示例:查看 HTTP 请求方法(如 GET、POST)的出现次数,并按频次降序排列。

    awk '{print $6}' access.log | sort | uniq -c | sort -nr
    
  • 解释

    • awk '{print $6}':提取每行的 HTTP 请求方法(通常是第六列)。
    • sort:对方法进行排序。
    • uniq -c:统计每种请求方法的出现次数。
    • sort -nr:按出现次数降序排列。

总结:

uniqsortawkgrep 是 Linux 中常用的文本处理工具,它们在应急响应过程中可以用于日志分析、流量监控、数据提取和统计等任务。通过组合使用这些命令,可以高效地筛选、排序、统计和分析大量的日志数据,帮助分析系统的状态和潜在的安全威胁。

posted @ 2025-08-06 10:36  0xMouise  阅读(16)  评论(0)    收藏  举报