[英]Accessing shell variable in awk but not interpreted
我對awk編程很新...
這是我試圖在awk中訪問shell變量count
代碼
ivlen=`cat record.txt | awk -F " " '{printf "%s",$10}'`
echo $ivlen
count=` expr $ivlen / 2 `
echo $count
echo "\nInitialization Vector : (Value) "
// This one needs attention
編輯:
iv=`awk -v count=$count 'BEGIN {RS=" ";ORS=" ";}
{if (NR > 4 && NR < count+4 )print $0}' esp_payload.txt`
echo $iv
輸入:
$cat esp_payload.txt
0000 5FB4 0000 0041
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 5361 6C74 6564 5F5F
D678 E0DA A075 5361 02B4 6273 D970 2F72
輸出:(必填) (我想要那些0000
字符串12 in number
)
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
// this is what I want not what is displayed
輸出:(顯示在屏幕上)
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 5361
現在出了什么問題?? 為什么一個0000
沒有打印,為什么5361
打印出來
您的腳本將0041\\n0000
為一條記錄,因為其中沒有空格。 您還將在輸出0000\\n0000
作為單個字段獲取,但是由於您echo $iv
而不是echo "$iv"
,您無法分辨
將RS=" "
更改為RS="[ \\n]"
。
您可以使用-v
將變量傳遞給awk
,並且可以簡化腳本,因為{print $0}
是默認操作:
iv=`awk -v count="$count" 'BEGIN { RS=" "; ORS=" " }
(NR > 4 && NR < count)' esp_payload.txt`
您的腳本用單引號引起來,bash不會用單引號引起來的字符串替換變量。
將參數傳遞給awk的最干凈方法: awk 'script.....' count=$count
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.