目录
1、简介
是一种流编辑器;对文本的内容进行增删改查
2、sed命令的操作符
s | 替换指定字符 |
d | 删除选定的行 |
a | 在当前行下面增加一行指定内容 |
i | 在当前行上面增加一行指定任务 |
c | 整行替换 |
y | 字符转换,转换前后的字符长度必须一致 |
p | 打印 |
= | 打印行号 |
r | 使用扩展正则 |
-n | 过滤sed的默认输出 |
3、行号范围区间打印
打印1到3行 cat b.txt | sed -n '1,3p'
打印1和3行 cat b.txt | sed -n '1p;3p'
打印行号 cat b.txt | sed -n '='
从第二行开始向下打印2行 cat b.txt | sed -n '2,+2p'
打印奇偶行
4、删
-d
只删除内容保留文件 sed -i 'd' b.txt
指定行删除
cat -n te.txt | sed -n '3d;p'
cat -n te.txt | sed -n '1,5d;p'
匹配字符串删除 cat -n te.txt | sed '/one/d'
5、替换
s:替换字符串 cat /etc/passwd | sed -n 's/root/test/p'
c:整行替换 cat te.txt | sed '/one/c nine'
在当前行的下一行添加内容:a cat te.txt | sed '/three/a 123'
在当前行的上一行添加内容:i cat te.txt | sed '/three/i 123'
在行后添加内容:r r后跟文件获取内容
cat te.txt | sed '/three/r b.txt'
6、分组以及字符串位置替换
echo abcdefg | sed -r 's/(.)(.)(.)(.)(.)(.)(.)/\7\6\5\4\3\2\1/'
7、实操题
①怎么解决sed命令处理容量过大,或者内容过多而导致执行效率慢的问题
使用split命令进行文件分割
②如何只删除文件内容保留文件
cat /dev/null > 123.txt
sed -i 'd' 123.txt
③如何删除空行
grep -v "^$" 123.txt
cat 123.txt | tr -s "\n"
sed '/^$/d' 123.txt
④把IPV4地址换成10.10.10.10
cat /etc/sysconfig/network-scripts/ifcfg-ens33 | sed '/IPADDR/c IPADDR=10.10.10.10'
⑤查看指定时间内的日志文件
sed -n '/Jun 13 18:10:01/,/Jun 13 18:50:01 /p' /var/log/messages