zoukankan      html  css  js  c++  java
  • Shell5

    sed文本编辑器(vim,notepad)非交互式的文本编辑器
    sed是逐行处理编辑器
        sed [选项] ‘条件指令'  文件   #没有条件指令时,默认对全文所有进行修改
    sed的所有操作默认时在内存条里面进行的,对源文件(硬盘里)没有影响
    选项:
    -n           屏蔽默认输出
    -r           支持扩展正则
    -i           改变源文件内容
    条件:
        1、行号 3d 8d 36d
        2、/正则/
        3、没有条件 (默认所有)

    指令:
    增a、删d、改s、查p

    # sed -n '/root/p' /etc/passwd    #将root的行找到,打印出来


    sed默认会显示全文,-n屏蔽默认输出

    # sed '3p' /etc/passwd         #这条命令会将sed第3行多打印一遍
    # sed -n '3p' /etc/passwd      #sed默认会显示全文,加-n会屏蔽默认输出
    # sed -n '3p;5p;8p' /etc/passwd   #打印多行,3行、5行、8行
    # sed -n '3,8p' /etc/passwd       #打印多行3-8行

    d删除
    # sed 'd' /etc/passwd           #删掉该文件,在内存条里面,对源文件无影响
    # sed -i 'd' /etc/passwd           #删掉该文件,在硬盘里,改变源文件内容

    s替换、删除(s的替换符号,可以使用任意字符)
    # sed 's/old/new/' 文件(第一个替换)
    # sed 's/old/new/g' 文件(所有替换)  
    # sed 's/old/new/2' 文件(每一行的第二个替换1)
    # sed '3s/old/new/2' 文件(第三行的第二个替换)

    # sed 's/old//2' 文件(每一行的第二个删除)
     
    # sed 's#/bin/bash#/sbin/sh#' 文件(每一行的第二个) s符号可以使用别的字符
    # sed 's,/bin/bash,/sbin/sh,'    s替换符号可以是“,”但是3个要保持一致
    # sed 's?/bin/bash?/sbin/sh?'     s替换符号可以是“?”但是3个要保持一致
    #########################################################################
    ()      保留(复制)
    ()          保留(复制)
    1        将保留的第一个复制出来

    vim a.txt
        abcdefabcdefabcdefabcdef
    grep "(abcdef)111" a.txt  将()里面的保留内容复制粘贴3遍  所有的字母都变红

    vim a.txt
        abcdefabcdeffqwerfqwer
    grep "(abcdef)1(fqwer)2" a.txt  将第一()里面的保留内容复制粘贴1遍;将第二()里面的保留内容复制粘贴1遍  所有字母都变红

    vim a.txt
    hello the world
    ni hao ya
    san li tun jian
    把第一个字母和最后一个字母对调
    sed -r 's/^(.)(.*)(.)$/321/' a.txt
    把第二个字母和倒数第二个字母对调
    sed -r 's/^(.)(.)(.*)(.)(.)$/14325/' a.txt

    ##########################################################################
    # sed -n 'p;n' 文件      打印奇数行
    # sed -n 'n;p' 文件      打印偶数行

    wc -l /etc/passwd     统计行数
    sed -n '$=' /etc/passwd  统计行数

    i      行前插入文本
    a      行后插入文本
    c      替换当前行      #s替换单词,c替换行
    # sed '1c baidu.com' /etc/hostname  将主机名改成baidu.com
    # sed '2c baidu.com' a.txt     将第二行内容替换成baidu.com
    # sed '2c XX YY ZZ' a.txt    将第二行内容替换成XX,并且插入行YY、行ZZ, 相当于“回车”


    r、w     
    vim a.txt    
    :r  /etc/passwd   在文本文件中读入这个文件
    :w  /tt.txt       另存为这个文件

    #sed '1r /etc/hostname' a.txt  在第一行后面读入这个文件,不加1的话,每一行都会读入一遍/etc/passwd
    #sed 'w /qq.txt' a.txt         将所有的行都保存为/qq.txt
    #sed '2w /qq.txt' a.txt        将第二行都保存为/qq.txt

    H: 将文件内容追加放入缓存,不会覆盖掉缓存里面的"回车"
    G: 将内存缓存追加放入文件,不会覆盖掉文件里面已执行的行内容
    h: 将文件内容覆盖放入缓存 ,会覆盖掉缓存里面的"回车"
    g: 将内存缓存覆盖放入文件,会覆盖掉文件里面已执行的行内容

    vim a.txt
    1
    2
    3
    4
    5
    6
    # sed '2H;5G' /opt/a.txt
    1
    2
    3
    4
    5

    2
    6

    # sed '2h;5g' /opt/a.txt
    1
    2
    3
    4
    2
    6


  • 相关阅读:
    Ionic2 自学须知的基本知识点
    Ionic2 启动加载优化总结
    Ionic2使用TypeScript调用自定义JavaScript脚本
    GPS坐标转百度地图坐标
    友情链接
    Python学习之路目录(收藏整理)
    基于Docker构建Jenkins CI平台
    KeepLived + nginx 高可用
    k8s-1.16 二进制安装
    Ansible自动化部署K8S集群
  • 原文地址:https://www.cnblogs.com/baichuanhuihai/p/8133997.html
Copyright © 2011-2022 走看看