如何从文件中获取值并将其存储在变量中? (使用shell脚本)

时间:2014-03-19 11:35:19

标签: awk

我有一个文件如下所述

import org.slf4j.LoggerFactory

class UpdateAvamDb {

        private final def DEFAULT_STALE_BACKUP_HOURS = 1.0

从另一个文件中我想读取此文件并将DEFAULT_STALE_BACKUP_HOURS之后的整数值转换为变量。

我已经阅读了关于awk的内容,但我无法做到,请帮助

谢谢

1 个答案:

答案 0 :(得分:1)

echo "import org.slf4j.LoggerFactory
class UpdateAvamDb {
        private final def DEFAULT_STALE_BACKUP_HOURS = 1.0" \
| awk  '/DEFAULT_STALE_BACKUP_HOUR/{print $NF}'

<强>输出

1.0

echo "import .... \ |是一种使用数据执行测试的快捷方式,而不是将其放入文件中。如果用最后的输入文件名替换print "..." |,awk代码块将执行相同的功能:

  awk '/..../{print $NF}' myFile
  1.0

你的标题是,将值存储在变量中,所以我们在这里:

 myVar=$(awk '/DEFAULT_STALE_BACKUP_HOUR/{print $NF}')

 echo "myVar=$myVar"
 1.0

根据您的最新评论,不要获得所有价值。 (我希望你只想要第一个)

 myVar=$(awk '/DEFAULT_STALE_BACKUP_HOUR/{print $NF;exit}')

 echo "myVar=$myVar"
 1.0

我们一旦匹配'DEFAULT ....'就退出文件处理并打印该值。

无论如何!awk正在从管道或文件中读取其输入,并询问“这条线在其中的任何位置都有”DEFAULT_STALE_BACKUP_HOUR“吗? 。当找到带有该行的行时,它将打印该行的最后一个字段,用$NF指定。 NF是为每个读取行设置的变量,表示“字段数”。将$添加到前面然后将表达式“转换”为另一个常见的awk idom,在本例中为$6,这意味着从当前行打印第6个字段。

关于awk的好教程是Grymoire's awk tutorial

IHTH

P.S。 (awk代码很简单,但很脆弱,因为你的问题非常具体。这不是一个通用的答案。我们需要看到一个更好的问题定义,以提供一个不仅仅是DEFAULT_...的解决方案。)