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
ps:注意,ni两个参数一起用会清空文件内容,注意备份

awk命令

本质:字符流编辑=====每次修改一列数据


撸猫鼠
10 声望1 粉丝

« 上一篇
Java权限管理
下一篇 »
Git版本控制