我正在嘗試撰寫一個腳本(使用 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="$1"
local ext="log"
local word="W( WORD)"
cd $dir
find "${output}" -type f -name "*.${ext}" -exec awk -v ptn="${word}" 'index($0,ptn) {print $NF,FILENAME}' {}
但是當我將local word變數從“W(WORD)”更改為“SOME(X)WORD”時,它會捕獲“-0.0590214433”而不是“-1.0475392439”,這意味著它需要最后一個數字。我怎樣才能找到解決方案?提前致謝!
uj5u.com熱心網友回復:
如您所見,print $NF輸出該行的最后一個欄位。請將該find行修改為:
find "${output}" -type f -name "*.${ext}" -exec awk -v ptn="${word}" 'index($0, ptn) {if (match($0, /-[0-9] \.[0-9] /)) print substr($0, RSTART, RLENGTH), FILENAME}' {}
然后它將輸出該行中的第一個數字。
請注意,它假定數字始終以-符號開頭。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/465459.html
上一篇:$BASH_VERSION與/usr/bin/env
下一篇:命令替換到管道中
