【问题标题】:Filter out the word and its value from a file从文件中过滤掉单词及其值
【发布时间】:2016-09-29 22:45:56
【问题描述】:

我有一个文件,内容如下:filename:input..txt

   <autoCommit=false, currentThread=Thread[[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads],connectTime=102,lastUser=null,currentError=null,currentErrorTimestamp=null,JDBC4Runtime=true,supportStatementPoolable=true,needRestoreClientInfo=false,defaultClientInfo={},supportIsValid=true>
    > <autoCommit=false,enabled=true,isXA=false,isJTS=false,vendorID=100,connUsed=false,doInit=false,'null',destroyed=false,poolname=ApplicationDB,appname=null,moduleName=null,connectTime=98,**dirtyIsolationLevel=false,initialIsolationLevel=2,infected=false,lastSuccessfulConnectionUse=1475188184480,secondsToTrustAnIdlePoolConnection=0,currentUser=java.lang.Exception

我想 grep 所有带有 connectTime= 的模式及其相关值。

for example from above file the o/p will be:
connectTime=102
connectTime=98

试过

 egrep -r 'connectTime='  input.txt

【问题讨论】:

    标签: shell awk sed grep


    【解决方案1】:

    使用 sed:

    $ sed 's/.*\(connectTime=[0-9]*\).*/\1/' input.txt
    connectTime=102
    connectTime=98
    

    【讨论】:

      【解决方案2】:

      就这样做吧:

      egrep -o "connectTime=[0-9]+" input.txt
      

      【讨论】:

        【解决方案3】:

        awk 解决方案:这将轮询文件中每行的所有字段,如果任何字段包含 connectTime,则打印该字段。

        awk -F, '{for(i=1;i<=NF;i++) if($i ~ "connectTime") print $i}' inputfile
        connectTime=102
        connectTime=98 
        

        或者如果你想严格控制 connectTime 的值是一个数字,那么:

        awk -F, '{for(i=1;i<=NF;i++) { if($i ~ "connectTime=[[:digit:]][^[:alpha:]]") print $i}}' inputfile 
        

        grep:

            grep -oP 'connectTime=[0-9]+' inputfile
            connectTime=102
            connectTime=98
        

        否则这可能很容易损坏。这仅在connecTime=somenumber 后跟comma 符号时才有效。这存在于提供的数据中。这将在 connectTime 之后打印任何内容。

        grep -oP 'connectTime.*?(?=,)' inputfile
        connectTime=102
        connectTime=98
        

        如果你想严格限制只有数字后跟connectTime的情况,那么

        grep -oP 'connectTime.[0-9]*?(?=,)' inputfile
        

        【讨论】:

          猜你喜欢
          • 2011-11-12
          • 2011-06-07
          • 2014-10-26
          • 1970-01-01
          • 1970-01-01
          • 2021-09-30
          • 2019-08-08
          • 2012-11-19
          • 2021-03-17
          相关资源
          最近更新 更多