【问题标题】:Linux Command line Help | extract specific parts from fileLinux 命令行帮助 |从文件中提取特定部分
【发布时间】:2013-05-16 10:53:06
【问题描述】:

假设我有一个日志,其中包含以下格式的数据

        Time           number status  
2013-5-10 19:18:43.430 123456 success 
2013-5-10 19:28:13.430 134324 fail 
2013-5-10 19:58:33.430 456456 success 

我想提取具有success 状态的numbers。 linux 中是否有任何方法可以使用命令行(grep,sed)来提取所提到的数据。 ?? 谢谢大家。。

【问题讨论】:

    标签: linux command-line sed grep


    【解决方案1】:

    grep only解决方案:

    grep -Po '\d+(?= success)' file
    

    或仅使用 awk

    awk '$4=="success"&&$0=$3' input
    

    【讨论】:

      【解决方案2】:

      这会根据成功状态打印数字-:

       awk '$4 ~ /success/ {print $3}' logfile
      

      【讨论】:

        【解决方案3】:

        你可以的

        (grep 'success' | cut -d ' ' -f 3) <$file
        

        【讨论】:

          【解决方案4】:
          cat file | grep success | awk '{print $3}'
          

          【讨论】:

          • 一只猫?你用那个额外的程序把键盘和 PID 都弄坏了。
          • 那又怎样?它会杀死你的CPU吗?我给出了一个可行的解决方案,甚至没有研究man。当然,您可以使用许多其他标准工具实现相同的目标,甚至仅使用 awk。处处都有改进的余地,但这并不意味着解决方案会更加优雅和可读。
          【解决方案5】:

          使用 perl:

          perl -ne '/success/ && split && print "$_[2]\n"' inputfile
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-29
            • 2011-05-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多