zoukankan      html  css  js  c++  java
  • linux提取指定行至指定位置

    • grep查找ERROR,定位位置
    • awk打印到指定行数
    • sed打印到文本末尾
    • awk打印到文本末尾

    方法一

    #!/bin/csh -f
    
    if(-f errorlog.rpt) then
        rm -rf errorlog.rpt
    endif
    
    ls *.log > loglst.lst     #将log文件写到指定文件
    
    #loop execute
    set n=`wc -l < loglst.lst`#得到log文件个数(行数)
    echo $n
    set i=1
    while ($i <= $n)
       set line="`awk '{if (NR == $i) print}' loglst.lst`"  #循环得到log文件名
       echo $line
       set linenum=`grep -n " ERROR: Device" $line | awk -F ":" '{print $1}'`  #查找ERROR位置,得到行数
       echo $linenum
       set j=$linenum
       set num=`wc -l < $line`       #得到文件的总行数
       while ($j <= $num )           #使用awk循环打印至行末
           echo "`awk '{if(NR == $j) print}' $line`" >> errorlog.rpt
           @ j ++
       end
    
       @ i ++
    end
    

    方法二

    请教大神得到的多种方法

    #!/bin/csh -f
    
    if(-f errorlog.rpt) then
        rm -rf errorlog.rpt
    endif
    
    ls *.log > loglst.lst
    
    #loop execute
    set n=`wc -l < loglst.lst`
    echo $n
    set i=1
    while ($i <= $n)
       set line="`awk '{if (NR == $i) print}' loglst.lst`"
       echo $line
          
       sed -n '/ ERROR: Device/,$p' $line >> errorlog.rpt   #查找打印至文本末尾
       #awk '/ERROR/,EOF'     $line >> errorlog.rpt
       #awk '/ERROR/{a++}a'   $line >> errorlog.rpt
       #awk 'a;/ERROR/{a++}'  $line >> errorlog.rpt
    
       @ i ++
    end
    
    
  • 相关阅读:
    restapi(6)- do it the functional way, 重温函数式编程
    JS模块化
    socket.io websocket
    CSS 文字换行
    webpack初识
    升级nodejs至最新
    JavaScript Promise迷你书(中文版)
    时间格式化
    npm yarn
    深入浅出MongoDB应用实战开发
  • 原文地址:https://www.cnblogs.com/OneFri/p/6042992.html
Copyright © 2011-2022 走看看