zoukankan      html  css  js  c++  java
  • 10.15 sed 命令实践

    在n行前插入

    [root@wen data]# sed '2i 106,dandan,CSO' person.txt
    101,oldboy,CEO
    106,dandan,CSO
    102,zhangyao,CTO
    103,Alex,COO
    104,yy,CFO
    105,feixue,CIO
    在n行后插入
    [root@wen data]# sed '2a 106,dandan,CSO' person.txt
    101,oldboy,CEO
    102,zhangyao,CTO
    106,dandan,CSO
    103,Alex,COO
    104,yy,CFO
    105,feixue

    插入多行
    [root@wen data]# sed '2a 106,dandan,CSO 107,bingbing,CCO' person.txt
    101,oldboy,CEO
    102,zhangyao,CTO
    106,dandan,CSO
    107,bingbing,CCO
    103,Alex,COO
    104,yy,CFO
    105,feixue,CIO
    CIO
    [root@wen data]# sed '2a 106,dandan,CSO
    > 107,bingbing,CCO' person.txt
    101,oldboy,CEO
    102,zhangyao,CTO
    106,dandan,CSO
    107,bingbing,CCO
    103,Alex,COO
    104,yy,CFO
    105,feixue,CIO

    删除指定行
    [root@wen data]# sed '2d' person.txt
    101,oldboy,CEO
    103,Alex,COO
    104,yy,CFO
    105,feixue,CIO
    [root@wen data]# sed '1~2d' person.txt
    102,zhangyao,CTO
    104,yy,CFO
    [root@wen data]# sed '1,+2d' person.txt
    104,yy,CFO
    105,feixue,CIO
    [root@wen data]# sed '2,3d' person.txt
    101,oldboy,CEO
    104,yy,CFO
    105,feixue,CIO
    [root@wen data]# sed '/feixue/,2d' person.txt
    101,oldboy,CEO
    102,zhangyao,CTO
    103,Alex,COO
    104,yy,CFO
    --------------------
    替换
    按行替换
    [root@wen data]# sed '2c 106,dandan,CSO' person.txt
    101,oldboy,CEO
    106,dandan,CSO
    103,Alex,COO
    104,yy,CFO
    105,feixue,CIO
    精确到行替换,s前面添加行号n
    [root@wen data]# sed "2s#CTO#CCO#g" person.txt
    101,oldboy,CEO
    102,zhangyao,CCO
    103,Alex,COO
    104,yy,CFO
    105,feixue,CIO
    ------
    [root@wen data]# cat test.txt
    a
    b
    a
    [root@wen data]# x=a
    [root@wen data]# y=b
    [root@wen data]# echo $x $y
    a b
    [root@wen data]# sed 's#$x#Sy#g' test.txt
    a
    b
    a
    双引号解析变量
    [root@wen data]# sed "s#$x#$y#g" test.txt
    b
    b
    b
    [root@wen data]# eval sed 's#$x#$y#' test.txt
    b
    b
    b

     


    [root@wen data]# sed '1,3s#C#--&--#g' person.txt
    101,oldboy,--C--EO
    102,zhangyao,--C--TO
    103,Alex,--C--OO
    104,yy,CFO
    105,feixue,CIO

    批量修改文件名
    &代表前面匹配到的字符

    [root@wen test1]# touch stu_102999_{1..5}_finished.jpg
    [root@wen test1]# ls
    stu_102999_1_finished.jpg stu_102999_3_finished.jpg stu_102999_5_finished.jpg
    stu_102999_2_finished.jpg stu_102999_4_finished.jpg
    [root@wen test1]# ls|sed -r 's#(^.*)_finished(.*$)#mv & 1.jpg#g'|bash
    [root@wen test1]# ls
    stu_102999_1.jpg stu_102999_3.jpg stu_102999_5.jpg
    stu_102999_2.jpg stu_102999_4.jpg

    ---------------------------------

    sed 使用-n,必须和p一起
    -n 取消默认输出
    [root@wen data]# sed '2p' person.txt
    101,oldboy,CEO
    102,zhangyao,CTO
    102,zhangyao,CTO
    103,Alex,COO
    104,yy,CFO
    105,feixue,CIO
    [root@wen data]# sed -n '2p' person.txt
    102,zhangyao,CTO
    [root@wen data]# sed -n 'p' person.txt
    101,oldboy,CEO
    102,zhangyao,CTO
    103,Alex,COO
    104,yy,CFO
    105,feixue,CIO

     

  • 相关阅读:
    docker 容器启动时设置环境变量source
    解决docker容器中Centos7系统的中文乱码
    Python 常用的标准库以及第三方库有哪些?
    excel 两列值匹配取另外一列值 INDEX MATCH 函数
    Dockerfile编写,以及设置一个自启动脚本
    主机、Docker时间与时区设置总结
    CentOS安装scp命令
    Python3中遇到UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal not in range(128)
    yum 安装 tomcat
    Docker退出容器不关闭容器的方法
  • 原文地址:https://www.cnblogs.com/wenyule/p/7674589.html
Copyright © 2011-2022 走看看