grep过滤工具:
选项:
-E:可以使用正则表达式
-v:取反查找
-P:配合\d使用
-w:匹配数字、字母、下划线
-s:匹配空格个tab键
参数:
\d:匹配[0-9]
匹配IP地址:
(25[0-5]\.|2[0-4]\d\.|1?\d?\d\.){3}(25[0-5]|2[0-4]\d|1?\d?\d)
egrep过滤工具(默认支持正则):
sed流式编辑器:
语法:
sed 选项 条件 指令 被处理文档
选项:
-n:屏蔽默认输出
-r:支持扩展正则
-i:修改源文件
指令:
p:输出
d:删除
s:替换
a:行下追加
i:行上追加
c:替换整行
数字加p:输出第几行
等号:输出行号
sed 'bash$' 's/:.*//p' 当使用s替换时,只显示被替换的行
awk精确搜索,逐行处理:
awk -F定义分隔符
NR 行号
NF 列号
定义多个分隔符
awk -F[/:] {print}
条件:
1. 字符串 ~包含 !~不包含
2. 使用数字或者是字符串
== != > >= < <=
3. 逻辑组合 && ||
进阶使用:
BEGIN,读取文档之前执行一次
逐行任务,读文档时执行n次
END,读取文档完毕后执行一次
一起使用
awk 'BEGIN{}{}END{}'
使用awk数组 + for循环实现高级搜索
案例
awk "BEGIN{s[$1]++}END{for(i in s){print i,s[i]}" 输出次数
sort 升序排列
sort -r 降序排列
sort -n 按照数字大小从小到大进行了排序
sort -k 2 -n test.txt
这个命令会按照每行的第二个字段(即年龄)进行排序,并且按照数字大小进行比较。
输出结果如下:
Bob 20 | |
Alice 25 | |
Charlie 30 |