J'ai été coincé à ce sujet pendant, et j'ai essayé de nombreuses façons mais je ne pouvais pas le faire fonctionner.
Disons que j'ai un fichier texte, avec contenu comme suivez P>
mark_line variable1 value1 value2 mark_line variable2 value3 mark_line variable3 value4 value5 value6 value7 mark_line ... ... mark_line
3 Réponses :
Sorti uniquement par l'obligation de générer une bande de relevés d'affectation (mais n'exécute pas nécessairement lesdites déclarations), nous commencerons par notre exemple de fichier de données:
$ awk '/mark_line/ { printf "\n" ; next } { printf $0" "}' mark_line.dat | \ egrep -v '^$' | \ while read -r myvar myvals do echo "${myvar}=\"${myvals}\"" done variable1="value1 value2" variable2="value3" variable3="value4 value5 value6 value7" variable4="value8"
Très cool, j'essayais de lire le numéro de ligne contient "mark_line", créer une boucle pour ces 2 numéros et obtenir la première chaîne "Line_Number +1" en tant que nom de variable, et reste d'entre eux comme des valeurs, mais semble Pour I in {1 ... 3} B> Contexte ne me permet pas d'utiliser $ {Number} variable dedans, donc j'étais coincé là-bas. Également combiné avec SED pour supprimer variable = "" B> String vide :)
Si vous avez du code spécifique qui ne se comporte pas, ajoutez cela à la question (par @ Kaylum Commentaire antérieure); Sinon, content de pouvoir aider; Une dernière suggestion, supposant que vous puissiez utiliser cette solution ... Que dois-je faire quand quelqu'un répond à ma question
Voulez-vous essayer ce qui suit:
awk -v RS="mark_line\n" -v FS="\n" ' /[^[:blank:]]/ { # skip blank lines sub("\n$", "", $0) # remove trailing newline printf("%s=", $1) # print "variablen=" portion str = $2 for (i=3; i<=NF; i++) str = str " " $i print "\"" str "\"" # print "value1 value2 .." portion } ' file
Printf peut écrire sur Var, utilisez-le
variable1="value1 value2" variable2="value3" variable3="value4 value5 value6 value7"
"J'ai essayé de nombreuses façons mais ne pouvait pas le faire fonctionner". S'il vous plaît montrer votre meilleure tentative et expliquer quelles problèmes vous avez avec cela. Sans que nous ne pouvons pas savoir exactement quel aspect du problème que vous rencontrez de la difficulté.
Vous voudrez peut-être jeter un coup d'œil à: Commande EVAL à bash et sa typique utilise
@qtwrk: Vous avez étiqueté votre question par shell i>, posix i> et bash i>. Veuillez vous décider, que vous souhaitiez une solution Bash, ou si vous avez besoin d'un POSIX-Shell-compatible.
@qtwrk: En outre, ce n'est pas clair de votre question, à quel point vous êtes coincé: est-ce que la lecture d'un fichier texte ou s'agit-il de générer de manière dynamique une variable de coque?