我試圖運行在以下格式的bash命令不是最後一個字符:逃跑〜!在AWK(bash命令),反斜槓就行
declare "test${nb}"="$(cat file.txt | awk '{if($3>0.5 && $3 !~ "ddf") $2="NA"; print $1,$2}')"
其中$ NB是一個整數(如2),並file.txt的含有一個包含各種數字和字符串值的表格(如果需要,我可以提供更多細節,但這裏不應該有關)
當運行這個時,shell替換!〜作爲我擁有的文件的名稱(不確定爲什麼)。我試圖逃離這個使用這樣反斜槓:
declare "test${nb}"="$(cat file.txt | awk '{if($3>0.5 && $3 \!~ "ddf") $2="NA"; print $1,$2}')"
但後來我得到這個錯誤:
awk: {if($3>0.5 && $3 \!~ "ddf") $2="NA"; print $1,$2}
awk: ^backslash not last character on line
我也試過有包含在變量「VAR」表,寫這樣說:
declare test[$nb]=$(echo "$var" | awk '{if($3>0.5 && $3 !~ "ddf") $2="NA"; print $1,$2}')
那麼有沒有錯誤,但輸出只是表,這是不是我不展開變量名的情況下的第一列的第一個字段。例如,如果我這樣做:
declare test2=$(echo "$var" | awk '{if($3>0.5 && $3 !~ "ddf") $2="NA"; print $1,$2}')
然後它可以很好地工作,test2有預期的價值。但我需要能夠使用任何數字而不是2(類似於測試[$ nb])。
任何想法如何解決這個問題?任何幫助將非常感激!
感謝
我試過,但將其關閉,然後當我嘗試回聲「測試2 $」(例如,如果NB = 2),它有一個空的輸出... – arielle
我試圖讓變量「var」中的表格,並以這種方式寫它:declare test [$ nb] = $(echo「$ var」| awk'{if($ 3> 0.5 && $ 3!〜「ddf」)$ 2 =「NA」; print $ 1,$ 2}')。沒有錯誤,但輸出只是表的第一列的第一個字段,當我不擴展變量名時不是這種情況。例如,如果我這樣做:declare test2 = $(echo「$ var」| awk'{if($ 3> 0。5 && $ 3!〜「ddf」)$ 2 =「NA」;打印$ 1,$ 2}'),那麼它完美的工作,test2具有預期的價值。 – arielle