从文件中提取数字

Extracting Number From a File

我正在尝试编写一个脚本(使用 bash)来查找一个词(例如“SOME(X) WORD:”)并打印该行的其余部分,这实际上是一些数字前面带“-”。澄清一下,我在文件中查找的示例行是;

        SOME(X) WORD:       -1.0475392439   ANOTHER.W=  -0.0590214433

我想提取“SOME(X) WORD:”之后的数字,因此本例中为“-1.0475392439”。我有一个与此类似的脚本,它从下一行中提取数字(两行都来自同一个输入文件)

 A-DESIRED RESULT W(   WORD) =       -9.68765465413

这个脚本是,

local output=""
local ext="log"
local word="W(   WORD)"

cd $dir

find "${output}" -type f -name "*.${ext}" -exec awk -v ptn="${word}" 'index([=12=],ptn) {print $NF,FILENAME}' {} +

但是当我将 local word 变量从“W(WORD)”更改为“SOME(X)WORD”时,它会捕获“-0.0590214433”而不是“-1.0475392439”,这意味着它需要最后一个行数。我怎样才能找到解决方案?提前致谢!

如您所见,print $NF 输出该行的最后一个字段。请将find行修改为:

find "${output}" -type f -name "*.${ext}" -exec awk -v ptn="${word}" 'index([=10=], ptn) {if (match([=10=], /-[0-9]+\.[0-9]+/)) print substr([=10=], RSTART, RLENGTH), FILENAME}' {} +

然后它将输出行中的第一个数字。
请注意,它假定数字始终以 - 符号开头。