2017-08-02 228 views
-3

我有這樣的txt文件:如何在shell腳本獲得AWK命令動態NR參數

1 a 
2 b 
3 c 

我想利用這些DATAS一步例如步首先,我將獲得「1」,並把它一個varible然後得到「A」把它放在一個varible和運行curl命令

我的意思是先第一行第一列然後最前一頁行第二列然後第二行第一列.....

我寫的一個腳本在下面但不工作,它變成零變量b和c

#!/bin/sh 
for ((i=1;i<=4;i++)); do 
       echo $i 
     b=$(awk 'NR==$i { print $1}' a.txt) 
     c=$(awk 'NR==$i { print $2}' a.txt) 
     echo $b 
     echo $c 
curl -X POST \ 
-H "X-netmera-api-key: xxxxxxxxxx" \ 
-H "Content-Type: application/json" \ 
-d '[ 
    { 
     "deviceToken" : "$b", 
     "platform" : "1", 
     "extId" : "$c" 
    } 
]' \ 
https://xxxx.xxxxx.com/rest/3.0/xxxxx 

done 
+1

這似乎是[XY問題](http://xyproblem.info/),因爲您描述的方法似乎沒有意義。告訴我們你想做什麼(而不是你想怎麼做),我們可以幫助你。 –

+0

順便說一句,該工作的正確工具(重新:生成正確引用和轉義的JSON)是['jq'](https://stedolan.github.io/jq/)。 –

回答

2

awk丟掉;這裏沒有必要。

while read -r b c; do 
    curl -X POST \ 
    -H "X-netmera-api-key: xxxxxxxxxx" \ 
    -H "Content-Type: application/json" \ 
    -d "[ 
     { 
      \"deviceToken\" : \"$b\", 
      \"platform\" : \"1\", 
      \"extId\" : \"$c\" 
     } 
     ]" \ 
    https://xxxx.xxxxx.com/rest/3.0/xxxxx 
done < a.txt 

您不應該試圖像這樣動態生成JSON,但這是另一個問題的問題。

+0

謝謝我的問題已經得到您的幫助 – getaffe

0

你需要傳遞變量與-v等來的awk:

b=$(awk -v varb=$i 'NR==varb { print $1}' a.txt) 

在這裏我們使用awk的變量varb等於你的bash循環的變量i。

+0

謝謝我的問題已經通過您的幫助解決了 – getaffe