[toc]
一、sed
# 1.什么是sed?
流式编辑器
# 2.为何要用sed?
sed与vim对比
1、sed可以把处理文件的规则事先写好。然后用一套规则编辑多个文件,而vim只能一个个编辑
2、sed处理文件一次只处理一行,即同一时间内存中只有文件一行内容,无论文件多大,都不会对内存造成过大压力,
# 3.如何使用sed?
sed 选项 "规则" 目标文件
选项:
-i 将默认输出结果(规则处理的结果+默认输出结果)输出到文件
-n 取消默认输出
规则:
定位+命令
定位:
行号定位:
sed '1p' nn.txt 打印第一行
sed '3p;5p' nn.txt 打印第三行、第五行
sed '2,4p' nn.txt 打印第二到第四行
正则定位:
sed '/12345/d' nn.txt 删除所有包含nn的行
sed '/^root/d' nn.txt 删除以root开头的行
sed '/12345$/d' nn.txt 删除以12345结尾的行
没有定位就是定位所有
命令:
p 打印
d 删除
# 4.示例
s///gi 替换(g全局 i不区分大小写)
sed '1,3s/root/jojo/gi' nn.txt 将第一到第三行的root替换为jojo
sed '/^ad/s/opkki/wwweee/gi' nn.txt 将所有以ad开头的行的opkki替换为wwweee
sed 's/^a/A/' nn.txt 将所有行行首的a替换为A
ip a | sed 's/eth0/jojo!!/' sed命令支持管道
i 在行前插入
a 在行后插入
二、awk
主要擅长处理有规律的文本,主要用于做一下格式化的处理
awk 选项 '规则' 文件路径
选项:
-F 指定分隔符
规则:
定位+命令
定位:
行号定位:
(NR、NF表示变量,NR表示行号, NF表示每行的段数量)
awk -F: 'NR == 3{print $1,$3}' a.txt 打印第三行的第一、第三段内容
awk -F: 'NR >= 2 && NR <= 4{print $2}' a.txt 打印第二到第四行的第二段内容
awk -F 'NR ==2 , NR == 4{print $0}' a.txt 打印第二到第四行的所有内容
awk -F 'NR <=2 || NR >=4{print $2,$4} 打印前两行与四行后的第二、四项内容
正则定位:
awk -F: '$2 ~ /4/{print $0}' a.txt 打印第二段含有4的整行
awk -F: '$2 !~ /4/{print $0}' a.txt 打印第二段不含有4的整行
awk -F: '$1 == "we" {print $0}' a.txt 打印第一段是we的整行
awk -F: '$1 == "we"{print $NF}' a.txt 打印第一段是we的行的最后一段
awk -F: '/\/bin/{print $0}' a.txt 打印含有/bin的整行(使用右斜杠\取消左斜杠/的特殊含义)
没有定位表示定位所有
命令:
{print $n} 打印第n行
三、grep
过滤
grep 选项 "过滤规则" 文件
选项:
-n 显示行号
-i 忽略大小写
-l 返回文件名
-r 递归
-v 取反
过滤规则
正则过滤
# 示例
grep -rl 'eth0' /etc/ 查找/etc/下内容含有eth0的文件
```