【问题标题】:Bash script: regexp reading numerical parameters from text fileBash 脚本:正则表达式从文本文件中读取数值参数
【发布时间】:2010-05-25 15:24:32
【问题描述】:

您好!

我有一个参数设置如下的文本文件:


NameOfParameter 值 1 值 2 值 3 ... ...


我想通过它的 NameOfParameter 使用正则表达式模式找到所需的参数,并将选定的 Value 返回到我的 Bash 脚本。 我尝试使用 grep 执行此操作,但它返回一整行而不是 Value

你能帮我找到方法吗?

【问题讨论】:

  • 您需要返回所有 3 个值吗?只有 1 个?
  • 根据什么标准选择选定的值?参数名称是列名还是类似的名称?

标签: bash file parsing shell


【解决方案1】:

尚不清楚您是希望将所有值放在一起还是只需要一个特定的值。在任何一种情况下,使用cut 命令的强大功能从文件中剪切您想要的列(-f 2- 将剪切第 2 列及以后的列(所以除了参数名称之外的所有内容;-d " " 将确保这些列被认为是空格分隔而不是默认的制表符分隔)

egrep '^NameOfParameter ' your_file | cut -f 2- -d " "

【讨论】:

    【解决方案2】:

    重击:

    values=($(grep '^NameofParameter '))
    echo ${values[0]}    # NameofParameter 
    echo ${values[1]}    # Value1
    echo ${values[2]}    # Value2
    # etc.
    
    for value in ${values[@:1]}    # iterate over values, skipping NameofParameter
    do
        echo "$value"
    done
    

    【讨论】:

    • 是否有机会将此方法用于具有非空格分隔符的数据:逗号、点、制表符等?
    • @Andrey:将 IFS 设置为分隔符:saveIFS=$IFS; IFS=','; values=($(grep '^NameofParameter ')); IFS=$saveIFS; ...
    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 2016-07-25
    • 2011-11-01
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2013-06-06
    相关资源
    最近更新 更多