三剑客
September 15, 2023About 2 min
三剑客
The Three Musketeers
Linux 三剑客:grep、sed、awk
grep
Global Regular Expression Print
-o选项表示只输出匹配到的内容,而不是整行;-E选项表示使用扩展的正则表达式;\b表示单词边界,用于确保匹配的是完整的IP地址;[0-9]{1,3}表示匹配1到3位数字;.表示匹配点号
grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" logfileREGULAR EXPRESSIONS 正则表达式
括号表达式
括号表达式:[], ()
字符类
POSIX 字符类
[:alnum:]:匹配任意字母和数字字符。[:alpha:]:匹配任意字母字符。[:blank:]:匹配空格和制表符(Tab)字符。[:cntrl:]:匹配控制字符。[:digit:]:匹配任意数字字符。[:graph:]:匹配可打印字符,不包括空格。[:lower:]:匹配任意小写字母字符。[:print:]:匹配可打印字符,包括空格。[:punct:]:匹配标点符号和其他特殊字符。[:space:]:匹配空白字符,包括空格、制表符、换行符等。[:upper:]:匹配任意大写字母字符。[:xdigit:]:匹配十六进制数字字符。
Repetition
| 符号 | 说明 |
|---|---|
? | 前面的项是可选的,最多匹配一次。 |
* | 前面的项将被匹配零次或多次。 |
+ | 前面的项将被匹配一次或多次。 |
{n} | 前面的项恰好匹配 n 次。 |
{n,} | 前面的项匹配 n 次或更多次。 |
{,m} | 前面的项最多匹配 m 次。这是 GNU 扩展。 |
{n,m} | 前面的项至少匹配 n 次,但不超过 m 次。 |
sed
Stream Editor
s: 替换d: 删除i: 插入
awk
awk 是三位创始人名字的简称
pattern { action }
gawk
awk是一行一行地处理文本文件,运行流程是:
先运行BEGIN后的{Action},相当于表头
再运行{Action}中的文件处理主体命令
最后运行END后的{Action}中的命令
有几个经常用到的awk常量:NF是当前行的field字段数;NR是正在处理的当前行数。