zoukankan      html  css  js  c++  java
  • Linux sed 命令

    动作:
    p 打印输出
    d 删除操作
    a 在指定的行后面添加一行内容
    i 在指定的行前面添加一行内容

    1、查看操作

    sed -n '5p' file                                         //只查看文件的第5行
    sed -n '3,5p' file                                      //查看文件的第3到第5行
    sed -n '5,$ p' file                                   //打印第5到最后一行
    
    

      

    2、删除操作

    sed '3 d' 1.txt                                //删除文件的第3行 ,然后将内容进行输出,不是直接操作的文件。
    sed '3,5 d' 1.txt                            //删除第三行到五行。
    sed '3,$ d' 1.txt                           //删除第三行到最后一行。
    

      


    3、添加操作

    sed '2a word' file                          //在第二行后面添加一行,内容为word
    
    sed '3i word' file                          //在第三行前面添加一行,内容为word 
    

      

    3、查找操作

    sed -n '/root/p' file                         //只输出root关键字的行
    
    sed '/root/d' file                           //将含有root的行删除,然后输出,加上-i可以操作原文件
    

      


    4、替换操作

    sed 's/root/new/' file                          //将文件中的root替换成new,每行只替换一次
    sed 's/root/new/g' file                       //将每行的所有root全部替换成new        g替换多次
    sed '3,4s/root/new/g' 1.txt                  //只替换第3到第4行的root为new
    

      

    sed 综合运用

    *****************************************************

    文档内容如下:

    19-罗锦辉:http://www.cnblogs.com/jw1519
    20-甘露秋:http://www.cnblogs.com/bazhahei
    21-张靖:http://www.cnblogs.com/zj21
    22-黄庭辉:http://www.cnblogs.com/1796440575hth
    23-刘波:http://www.cnblogs.com/oppppo
    24-杨俊杰:http://www.cnblogs.com/duolaameng
    25-侯宝:

    1、只输出学生姓名
    cat jw |sed 's/[0-9 a-Z ://.-]/ /g'
    
    2、只输出每个学生的url
    
    cat jw |sed 's/.*:/.//g' |sed '/.*:/d'
    
    3、只输出个人博客里的学号
    cat jw |sed 's/-.*/ /g'
    
    4、只输出个人博客中,两个字姓名的学生名
    cat jw |sed 's/[0-9 a-Z ://.-]//g' |grep -v '...'
    
    5、只输出每个人博客地址的最后一段,即.com/后面的一段内容
    cat jw |sed 's/.*// /g' |sed 's/.*://g'
    
    6、只输出最后一段全部是字母的
    cat jw |sed 's/.*// /g' |sed 's/.*[0-9].*/ /'|
    
    7、只输出最后一段含有大写字母的
    cat jw |sed 's/.*// /g' |sed -n '/[A-Z]/p'
    

    将/etc/passwd的最后一行全部改成/bin/bash

    cat /etc/passwd|sed  's/(.*:)(.*)/1/bin/bash/'                       //    (.*:) 第一部分  (.*)第二部分        1表示第一部分

    2.将/etc/passwd每行前面的用户名,添加到最后一段
    如:root:x:0:0:root:/root:/bin/bash
    处理后应该为
    root:x:0:0:root:/root:/bin/bash:root

    cat passwd |sed 's/(^[a-Z]*)(.*)/&:1/'                       // &表示全部
    

     

    3.一文本内容如下:
    192.168.100.2
    172.16.5.4
    10.101.2.5
    133.37.25.21

    通过命令将其处理成如下效果(转换到一行,通过逗号隔开,每行内容用单引号引起来)
    '192.168.100.2','172.16.5.4','10.101.2.5','133.37.25.21'

    cat 1.txt |sed "s/^|$/'/g" |tr '
    ' ','|sed 's/,$/
    /g'                     //先将每行文本的前后加上单引号,再将换行符转换为逗号,在将最后一个逗号转换为换行符。  ^ 开始     $结尾    |   或者
    

     

  • 相关阅读:
    Tree Restoration Gym
    Game HDU
    Codeforces Gym 191033 E. Explosion Exploit (记忆化搜索+状压)
    listview去掉条目间的分割线
    listview设置条目点击的时候不变色(让状态选择器不起作用)
    url拼凑示例(具体拼凑规则由服务器定)
    格式化一个文件的大小(size),或者说是格式化一个app的大小(size)
    ratingbar设置不可调节星星数量
    listview的条目(item)如何做出卡片效果
    安卓网络权限异常
  • 原文地址:https://www.cnblogs.com/jw35/p/6223453.html
Copyright © 2011-2022 走看看