grep(文本过滤)
grep
使用基础正则表达式匹配egrep
使用扩展正则表达式匹配fgrep
不使用正则表达式匹配,速度最快
[root@stardust ~]# grep -v 排除指定字符串
[root@stardust ~]# grep -i 忽略大小写匹配
[root@stardust ~]# grep -n 显示匹配到的行号
[root@stardust ~]# grep -c 显示匹配行数
[root@stardust ~]# grep -o 仅显示匹配到的字符串
[root@stardust ~]# grep -q 静默模式 不输出任何信息 配合$?使用
[root@stardust ~]# grep -w 精确匹配
[root@stardust ~]# grep -A 显示匹配行及后面N行
[root@stardust ~]# grep -B 显示匹配行及前面N行
[root@stardust ~]# grep -C 显示匹配行及前后N行
[root@stardust ~]# grep -E egrep
[root@stardust ~]# grep -G grep
[root@stardust ~]# grep -F fgrep
[root@stardust ~]# grep -P 使用perl的正则
sed(行编辑器)
sed(Stream Editor)
操作文件时,每次从源文件中读取一行到sed工作的模式空间(pattern space)中,在模式空间中对数据进行操作后,将文本流输出至屏幕
常用选项
-n
静默模式,不输出模式空间中的内容至屏幕-e script
多点编辑功能,在一个sed命令中执行多个编辑操作-f script-file
指定脚本文件-r
支持使用扩展正则表达式-i
修改原文件-i.bak
修改前自动创建备份文件
地址定界
不给地址
对全文进行处理单个地址
number
指定的行/pattern/
被此模式所能匹配到的每一行
地址范围
num1,num2
从num1到num2之间的行num1,+num2
从num1起到之后的num2行/pat1/,/pat2/
两个pattern之前的行num,/pat1/
从num起到pat区间的行/pat/,~num
匹配行步进num行
步进
~
num1~num2
从num1开始,每隔num2行操作。1~2
显示奇数行0~2
显示偶数行
编辑命令
d
删除p
显示模式空间中的内容a
行后追加文本i
行前插入文本c
替换行的文本内容w FILE
把模式空间中匹配到的行保存到指定文件r FILE
把指定文件的文本流读取到当前文件匹配行的行后=
为模式空间中的行显示行号!
对地址定界取反s///
查找替换 使用方法同vim中的s///
- 同vim,默认只替换一行中第一个匹配的内容 区分大小写
i
不区分大小写g
全局替换 每一个匹配的元素都替换p
配合-n
使用,只显示处理过的行w FILE
将处理过的行 保存至指定文件
;
如果在一次执行时包含多个处理命令,需要使用分号分割
高级编辑命令
h
把模式空间中的内容覆盖至保持空间中H
把模式空间中的内容追加至保持空间中g
从保持空间取出数据覆盖至模式空间G
从保持空间取出内容追加至模式空间x
把模式空间中的内容与保持空间中的内容进行互换n
读取匹配到的行的下一行至模式空间N
追加匹配到的行的下一行至模式空间d
删除模式空间中的行D
删除多行模式空间中的所有行
高级编辑使用示例
sed -n 'n;p' FILE:显示偶数行
sed '1!G;h;$!d' FILE:逆向显示文件内容
sed '$!N;$!D' FILE:取出文件后两行
sed '$!d' FILE:取出文件最后一行
sed 'G' FILE:在每一行后添加一行空白行
sed '/^$/d;G' FILE:把多个空白行合并成一行
sed 'n;d' FILE: 显示奇数行;
sed -n '1!G;h;$p' FILE: 逆向显示文件中的每一行