【问题标题】:How get value from text file in linux如何从linux中的文本文件中获取值
【发布时间】:2015-01-14 13:57:19
【问题描述】:

我有一些文本格式的文件 xxx.conf。我在这个文件中有一些文本“disablelog = 1”。 当我使用

grep -r "disablelog" oscam.conf

输出是

disablelog = 1

但我只需要值 1。 请问您有什么想法吗?

【问题讨论】:

    标签: linux file search


    【解决方案1】:

    没有awk的解决方案只是为了好玩

    grep -r disablelog | cut -d= -f2 | xargs
    

    xargs 在这里用来修剪空格

    【讨论】:

      【解决方案2】:

      假设您需要它作为脚本中的 var:

      #!/bin/bash
      
      DISABLELOG=$(awk -F= '/^.*disablelog/{gsub(/ /,"",$2);print $2}' /path/to/oscam.conf)
      echo $DISABLELOG
      

      调用此脚本时,输出应为 1。

      编辑:无论等号和值之间是否有空格,上面都会处理。应该以任一方式锚定正则表达式以提高性能。

      【讨论】:

        【解决方案3】:

        一种方法是使用awk 仅打印值

        grep -r "disablelog" oscam.conf | awk '{print $3}'
        

        您也可以使用seddiablelog = 替换为空

        grep -r 'disablelog' oscam.conf | sed -e 's/disablelog = //'
        

        如果您还想在= 之前和之后获取带或不带空格的行,请使用

        grep -r 'disablelog' oscam.conf | sed 's/disablelog\s*=\s*//'
        

        上面的命令也会匹配

        disablelog=1
        

        【讨论】:

          【解决方案4】:

          试试:

          grep -r "disablelog" oscam.conf | awk -F= '{print $2}'
          

          【讨论】:

          • 这将返回字符串' 1'(注意空格)。除此之外,更好的选择是awk -F= '/^disablelog/{print $2}' oscam.conf,保存一个进程和一个管道,并利用 awk 的内置模式匹配。
          猜你喜欢
          • 1970-01-01
          • 2023-04-01
          • 2018-01-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多