zoukankan      html  css  js  c++  java
  • Linux之sed命令常见用法

     

     

    1. sed(stream editor),流编辑器

      linux中,主要中sed命令实现对文件的增删改替换查

    名称
           sed - 用于过滤和转换文本的流编辑器
    
    SYNOPSIS
           sed [选项]... {script-only-if-no-other-script} [文件]...
    
    常用选项或命令
    -i                  正式执行操作修改内容    
         
    -n                  取消默认输出
    
    -e                  允许多项编辑
    
    -r                  使用扩展正则表达式
    
    =                   在文件内容行前增加一行行号
    
    s                   查找并替换
    
    g                   全局范围
    
    p                   打印输出
    
    '/ /p'              正则表达式匹配/ /里面的内容并输出
    
    '2s///g'            2指代第二行
    
    's#()()#12#g'     分配处理,1指代第1个()内的内容
    
    's#()()#mv & doubi#g'     分配处理,1指代第1个()内的内容,&指代##里面查找到的所有内容
    
    脚本命令
    i            在匹配的文件内容行前增加,常用格式:’//i zjnr’,’2i zjnr’
    
    a            在匹配的文件内容行后增加,常用格式:’//a zjnr’、’2a zjnr’
    
    d            删除匹配的文件内容所在的行,常用格式:’//d’、’2d’
    
    p            打印输出匹配到的文本内容,常用格式:sed -n ’//p’、sed -n ‘2p’ 
    
    s            替换匹配到的文件内容,常用格式:’s///g’、’s###g’;&代表匹配到的内容
    
    c            按匹配到的内容替换文本内容,使用格式:’2c thnr’

     

    2. sed的简单增删查改

    # 把passwd文件复制到当前用户家目录
    cp /etc/passwd ~/
    cd
    
    # 增
    # 22行前插入
    sed -i '22 i佛祖派来的逗比' passwd
    # 22行后添加
    sed -i '22 a佛祖派来的逗比' passwd
    # 匹配postfix行,在行前插入
    sed -i '/postfix/ iemail' passwd
    
    # 删
    sed -i '22d' passwd
    sed -i '/佛祖派来的逗比/d' passwd
    
    # 查,-n取消默认输出,即只输出匹配到的内容
    sed -n '/root/p' passwd
    sed -n '22p' passwd
    
    # 替换
    # 替换匹配到的第一个root为Caiyun
    sed -i 's#root#Caiyun#' passwd
    # 替换所有root为Caiyun
    sed -i 's#root#Caiyun#g' passwd

     

    3. 扩展实例

    # 取ip地址
    ifconfig eth0|sed -nr '2s/^.*ddr:(.*) B.*$/1/gp'
    
    # 转换列输出
    sed -r 's#([^:]+)(:.*:)(/.*$)#321#g' passwd
     
    # 优化sshd服务
    sed '13a Port 52004
    PermitRootLogin no
    PermitEmptyPasswords no
    UseDNS no
    GSSAPIAuthentication no' sshd_config
     
    # 打印文件内容不包含root用户行
    sed '/root:x/d' passwd
     
    #指定行修改文件内容
    sed '28s/dudu/DUDU/g' passwd 
     
    # 优化开机自启动服务
    chkconfig --list|grep "3:on"|egrep -v "crond|network|rsyslog|sshd|sysstat" |awk '{print"chkconfig",$1,"off"}'|bash
     
    # 批量更改文件名
    ls rename/|sed -r 's/(^stu.*)_fin.*$/1.png/g'
    ls|sed 's/(^stu.*)_fin.*$/mv & 1.png/g'|bash
    rename "_finished" ""  stu*

     

     

  • 相关阅读:
    配置连接远程ip的Redis
    SpringBoot保存数据报错:could not execute statement; SQL [n/a]; constraint [PRIMARY];nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
    SpringBoot配置JDBC连接MySql数据库的时候遇到了报错:HikariPool-1
    SQLServer系统视图sysobjects中type字段说明
    Markdown常用语法
    博客园如何使用Markdown编辑器
    Chrome浏览器报错:ERR_UNSAFE_PORT
    Spring Boot Shiro
    Spring Security 安全认证
    Halo(十三)
  • 原文地址:https://www.cnblogs.com/Caiyundo/p/10310416.html
Copyright © 2011-2022 走看看