【问题标题】:parsing file in bash在 bash 中解析文件
【发布时间】:2012-09-13 06:24:03
【问题描述】:

我在一个文件中有一个输出,我想逐行解析文件,以便将带有“ip 地址(10.113.193.70)”和“版本:47.80.99.08”的行输出到标准输出。使用 grep/awk 或 bash 进行解析的最佳方法是什么?

10.113.193.70

Executing (0,0,0,0,0,0,0,0,0,0):
==== product information ====
Product: e10
Package: default
Version: 47.80.99.08
Type:    customer
Builder: symsm
Project: RAID

【问题讨论】:

    标签: bash parsing awk grep


    【解决方案1】:

    所有awk sed grep bash 都可以使用

    这是假设带有 IP 的行位于行首, 并且没有其他行以数字开头。
    否则,您可以优化 IP 模式。

    重击:

    #!/usr/bin/env bash
    while read -r
    do [[ $REPLY =~ ^(Version|[[:digit:]]) ]] && echo "$REPLY"
    done < file
    

    grep:

    $ grep "^\(Version\|[[:digit:]]\)" file
    10.113.193.70
    Version: 47.80.99.08
    

    awk:

    $ awk '$1 ~ /^(Version|[0-9])/ { print }' file
    10.113.193.70
    Version: 47.80.99.08
    

    sed:

    $ sed -n '/^\(Version\|[[:digit:]]\)/p' file
    10.113.193.70
    Version: 47.80.99.08
    

    【讨论】:

      【解决方案2】:

      一种方法:

      grep '[0-9][.][0-9]*[.][0-9]*[.][0-9]' filename
      

      【讨论】:

        猜你喜欢
        • 2018-08-30
        • 2016-06-15
        • 1970-01-01
        • 1970-01-01
        • 2010-09-08
        • 2011-05-16
        • 2013-08-30
        • 1970-01-01
        • 2014-04-28
        相关资源
        最近更新 更多