type
status
date
slug
summary
tags
category
icon
password
工具 | 核心用途 | 类比 |
grep | 查找过滤 | "查" |
sed | 替换编辑 | "改" |
awk | 分析统计 | "算" |
grep —— 文本搜索利器
在文本中查找符合某种模式(正则表达式)的行。
sed —— 流编辑器(Stream Editor)
对文本逐行编辑与替换。
常见编辑命令
命令 | 含义 | 示例 |
s | 替换(substitute) | s/foo/bar/g |
d | 删除行 | /^#/d |
p | 打印行 | /error/p |
a | 在匹配行后追加 | /pattern/a\追加的内容 |
i | 在匹配行前插入 | /pattern/i\插入的内容 |
c | 替换整行内容 | /pattern/c\新的一行内容 |
y | 字符翻译(类似 tr) | y/abc/xyz/ |
q | 提前退出 | 5q # 读到第5行后停止 |
= | 打印当前行号 | /ERROR/= |
n | 读取下一行并跳过当前行 | n; /foo/d |
r file | 在匹配行后读入外部文件内容 | /end/r footer.txt |
w file | 把匹配行写入文件 | /ERROR/w errors.txt |
! | 取反,反选行执行 | /foo/!d |
awk —— 报表与结构化文本处理工具
awk 是一种处理文本文件的语言,一个强大的文本分析工具,逐行读取文本,默认空格或者tab作为分隔符进行分割,对文本行按字段进行分析、计算、格式化输出。
awk options 'pattern {action}' file- options 选项,控制awk的行为
- -F, 指定输入字段的分隔符,默认是空格。使用这个选项可以指定不同于默认分隔符的字段分隔符。
awk -F',' '{print $1, $2}' file
- ‘pattern {action}’
- pattern 匹配输入数据的模式,省略后默认awk会对所有行进行操作
- {action} 在匹配到的行上执行的动作,省略后默认动作是打印整行
pattern的几种形式
类型 | 示例 | 含义 |
正则表达式 | /error/ {print $0} | 匹配包含 “error” 的行 |
表达式(逻辑判断) | $3 > 1000 {print $1,$3} | 匹配数值条件 |
取反(NOT) | ! /warn/ {print $0} | 过滤不包含 “warn” 的行 |
范围判断 | /begin/,/end/ {print $0} | 匹配从 “begin” 到 “end” 的所有行 |
行号匹配 | NR==1 {print $0} | 匹配第1行 |
组合逻辑 | /error/ && $3 > 100 {print $1} | 同时满足两个条件 |
假设有一个日志文件
元素 | 内容 | 说明 |
options | -F' ' | 设置字段分隔符为空格 |
pattern | /404|500/ | 匹配含有 404 或 500 的行(正则表达式) |
action | {print NR, $1, $9} | 打印行号、IP(第1列)和状态码(第9列) |
file | access.log | 输入文件 |