linux 中 sed命令
什么时候使用该命令?
- 对文本进行编辑的时候,编辑包括 "增, 删, 改"
- 增 -添加内容
- 删 -删除内容d
- 改 -如把内容a修改为内容b, 即替换 用到命令 sg
- 定义: 文本编辑器-(流媒体编辑器)
- 特点: 命令方式编辑,而不是在vim里边
- 格式
- sed [参数] '处理规则' 操作对象路径
- 参数
- -i : 即时编辑
- -f : 匹配文件内规则
- -r : 支持拓展正则
- -e :允许多项编辑
- -n : 取消默认输出的显示
- 定位
- 数字定位
- sed '3d' 4.txt
- sed '2,3d' 4.txt
- 正则定位
- sed '/^g/d' 2.txt
- 数字和正则定位
- sed '3,/^g/d' 2.txt
- 正则正则定位
- sed '/^g/,/^j/d' 2.txt
- 编辑模式(至少与-i参数配合使用)(使用见操作演示)
- 增
- a 在某行的下一行添加一行内容
- i 在某行的上一行添加一行给内容
- r 把当前文件内容添加到另一文件的某行后边
- w 某文件指定行内容覆盖写入到另一文件
- 删
- d 删除指定内容
- 改
- c 替换当前行内容
- y 替换文本某行内容的某些字符
- s 替换文本中所有行的第一个xxx字符串
- sg 替换文本中所有的a字符串为b字符串
- sgi 中i 忽略大小写
- 输出
- p 打印指定内容
- 案例
- 将nginx.conf中的注释行全部去掉
- sed '/^ *#/d' /etc/nginx/nginx.conf
- 将nginx.conf中每一行之前增加注释
- sed 's/.*/# &/g' /etc/nginx/nginx.conf
- & :代表前面匹配到的内容
- 一键修改本机的ip
- 192.168.15.100 ---> 192.168.15.101
- 172.16.1.100 ---> 172.16.1.101
- sed -i 's#.100#.101#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
- 将/etc/passwd中的root修改成ROOT
- sed -i 's#root#ROOT#g' /etc/passwd
- 删除以#开头的行
- sed -i '/^#/d' 2.txt
- 删除含#的行
- sed -i '/#/d' 2.txt
- 删除以#开头的行的#号
- sed -i 's/^#//g' 2.txt(把开头的#匹配成空)
- 将文件中的Hello World 替换成 World Hello
- sed -i 's/Hello World/World Hello/g' 文件路径
- awk '{print $2,$1}' 7.txt (虚假替换-显示替换)
- 删除一个文本中所有的数字
- 思路: 将文件中所有的数字替换曾空
- sed -i -r 's/[0-9]+//g' 文件路径
- 虚假删除
- cat 2.txt | tr -d '[0-9]+'
- sed '2,3d' 4.txt