zoukankan      html  css  js  c++  java
  • shell 指定行插入

    #如果知道行号可以用下面的方法
    sed -i '88 r b.file' a.file    #在a.txt的第88行插入文件b.txt
    awk '1;NR==88{system("cat b.file")}' a.file > a.file
     
    #如果不知道行号,可以用正則匹配
    sed -i '/regex/ r b.txt' a.txt # regex是正则表达式
    awk '/target/{system("cat b.file")}' a.file > c.file
     
    #sed的話如果不改变源文件,可以去掉-i开关,修改会输出到STDOUT
     
    原文件:
    [root@xiaowu shell]# cat -n file 
         1  aaaa
         2  bbbb
         3  cccc
         4  dddd
     
    现在要在第二行即“bbbb”行的下面添加一行,内容为“xiaowu”
    [root@xiaowu shell]# sed '/bbbb/axiaowu' file 
    aaaa
    bbbb
    xiaowu
    cccc
    dddd
     
    如果要加两行“xiaowu”可以用一下语句,注意用“ ”换行
    [root@xiaowu shell]# sed '/bbbb/axiaowu xiaowu' file 
    aaaa
    bbbb
    xiaowu
    xiaowu
    cccc
    dddd
     
    如果要在第二行即“bbbb”行的上添加一行,内容为“xiaowu”,可以把参数“a”换成“i”
    [root@xiaowu shell]# sed '/b/ixiaowu' file 
    aaaa
    xiaowu
    bbbb
    cccc
    dddd
     
    以上文件中只有一行匹配,如果文件中有两行或者多行匹配,结果有是如何呢?
     
    [root@xiaowu shell]# cat -n file 
         1  aaaa
         2  bbbb
         3  cccc
         4  bbbb
         5  dddd
     
    [root@xiaowu shell]# sed '/bbbb/axiaowu' file 
    aaaa
    bbbb
    xiaowu
    cccc
    bbbb
    xiaowu
    dddd
     
    由结果可知,每个匹配行的下一行都会被添加“xiaowu”
     
    那么如果指向在第二个“bbbb”的下一行添加内容“xiaowu”,该如何操作呢?
    可以考虑先获取第二个“bbbb”行的行号,然后根据行号在此行的下一行添加“xiaowu”
     
    获取第二个“bbbb”行的行号的方法:
    方法一:
    [root@xiaowu shell]# cat -n file |grep b |awk '{print $1}'|sed -n "2"p
    4
    方法二:
    [root@xiaowu shell]# sed -n '/bbbb/=' file |sed -n "2"p
    4
    由结果可知第二个“bbbb”行的行号为4,然后再在第四行的前或后添加相应的内容:
    [root@xiaowu shell]# sed -e '4axiaowu' file 
    aaaa
    bbbb
    cccc
    bbbb
    xiaowu
    dddd
    [root@xiaowu shell]# sed -e '4axiaowu xiaowu' file 
    aaaa
    bbbb
    cccc
    bbbb
    xiaowu
    xiaowu
    dddd
     
     
    向指定行的末尾添加指定内容,比如在“ccccc”行的行尾介绍“ eeeee”
     
    [root@xiaowu shell]# cat file
    aaaaa
    bbbbb
    ccccc
    ddddd
    [root@xiaowu shell]# sed 's/cc.*/& eeeee/g' file
    aaaaa
    bbbbb
    ccccc eeeee
    ddddd
  • 相关阅读:
    Ext JS学习第三天 我们所熟悉的javascript(二)
    Ext JS学习第二天 我们所熟悉的javascript(一)
    Ext JS学习第十七天 事件机制event(二)
    Ext JS学习第十六天 事件机制event(一)
    Ext JS学习第十五天 Ext基础之 Ext.DomQuery
    Ext JS学习第十四天 Ext基础之 Ext.DomHelper
    Ext JS学习第十三天 Ext基础之 Ext.Element
    Ext JS学习第十天 Ext基础之 扩展原生的javascript对象(二)
    针对错误 “服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF” 的原因分析
    C# 使用HttpWebRequest通过PHP接口 上传文件
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/8330578.html
Copyright © 2011-2022 走看看