sed命令
本质:字符流编辑=====每次修改一行数据
功能【增、删、改、查】:擅长行操作+修改文件内容
原理:将行内容读取到内存中处理,不是直接操作文件,源文件还是放在硬盘的block里,更新的内容可以利用参数刷新到磁盘中
场景:脚本、配置文件
结构:
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
命令 参数 条件-处理 处理文件信息
sed -n '/old/p' text.txt ---查找old字符,并且显示出来
PS:全屏编辑工具——vi/vim
man sed ------------帮助文档
一、修改服务器ip脚本
- && \ ------执行完成之后在执行下一行
- su script.sh -----执行脚本文件
#!/bin/bash
#01.editor network ip info
sed -i "s#10.0.0.0.1#12.0.0.200#g" /etc/sysconfig/network-scripts/ifcft-eth0 && \
sed -i "s#(.*)0(.*)#\110\2#g" /etc/sysconfig/network-scripts/ifcft-eth0 && \
#02.restart network
systemctl restart nerwork && \
#03.get hostname address
eeho "服务器主机地址:$(hostname -I)" >>/tmp/old.txt
二、实践
参数:①-p:取消默认输出 ②-r:识别扩展正则 ③0i:内存信息覆盖到磁盘中 ④-e识别多个操作命令
1、根据文件内容进行查询
sed -n '/oldboy/p' person.txt
sed -n '/oldboy/,/Alex/p' person.txt 连续的多行,“,”d代表从哪儿开始到哪儿结束
sed -n '/oldboy/p;/Alex/p' person.txt 不连续的多行,“;”d代表个体不连续
2、根据文件行号进行查询
sed -n '1,3p' person.txt 1-3行查找
3、添加文字信息
sed -n '1i100,oldgirl,UFO' person.txt 第一行添加
sed -i '$a108,oldgirl,UFO' person.txt 最后一行
4、删除信息
sed '2,6d' person.txt 删除2-6行
5、获取IP地址
ip a s eth0|sed -rn '3s#^.*net (.*)/24.*#\1#gp'
6、编辑之前备份
sed -i.bak 's#121#121#g' person.txt
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。