三剑客
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" logfile
REGULAR 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是正在处理的当前行数。