从文件中提取数字
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}' {} +
然后它将输出行中的第一个数字。
请注意,它假定数字始终以 -
符号开头。
我正在尝试编写一个脚本(使用 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}' {} +
然后它将输出行中的第一个数字。
请注意,它假定数字始终以 -
符号开头。