我有一个文件如下所述
import org.slf4j.LoggerFactory
class UpdateAvamDb {
private final def DEFAULT_STALE_BACKUP_HOURS = 1.0
从另一个文件中我想读取此文件并将DEFAULT_STALE_BACKUP_HOURS
之后的整数值转换为变量。
我已经阅读了关于awk的内容,但我无法做到,请帮助
谢谢
答案 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_...
的解决方案。)