2017-08-02 1 views
-3

Je txt comme ceci:Comment obtenir le paramètre NR dynamique awk au script shell

1 a 
2 b 
3 c 

Je veux prendre ces étapes de données par étape, par exemple la première ı obtiendra « 1 » et le mettre un varible puis obtenir « a » mis dans un varible et exécuter une commande boucle

Je veux dire d'abord la première ligne, puis la première colonne fisrt ligne deuxième colonne puis deuxième ligne la première colonne .....

écrit ı un script ci-dessous mais ne fonctionnant pas, il devient null variable pour b et 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

Cela semble être une [Question XY] (http://xyproblem.info/) car l'approche que vous décrivez ne semble pas logique. Dites-nous ce que vous voulez faire (par opposition à la façon dont vous voulez le faire) et nous pouvons vous aider. –

+0

BTW, le bon outil pour le travail (re: générer correctement cité et échappé JSON) est ['jq'] (https://stedolan.github.io/jq/). –

Répondre

2

Jeter awk loin; ce n'est pas nécessaire ici. Vous ne devriez pas essayer de générer dynamiquement JSON comme ceci, mais c'est un problème pour une autre question.

+0

Merci mon problème a été résolu par votre aide – getaffe

0

Vous devrez passer des variables à awk avec -v et ainsi:

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

Ici, nous fixons la awk varb variable égale à la variable i de la boucle bash.

+0

Merci mon problème a été résolu par votre aide – getaffe