PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bash variable im awk script



moedule
04-08-2005, 12:40
hey

ich hab folgendes problem:

in einem bash script wird durch eine variable a mit einem wert belegt, z.B. $a=5

in diesem script soll nun ein awk befehl aufgerufen werden, in dem genau dieser wert eine rolle spielt, also im einfachen beispiel
awk '{print 5+$1}' datei

also zu eben dieser variable a (in diesem fall 5) soll z.B. die erste Spalte addiert werden

leider kann ich an dieser stelle nicht schreiben
awk '{print $a+$1}' datei
denn das $a ist ja in einem anderen scope definiert, im awk script existiert es dann halt nicht mehr

wie kann man denn diese problem lösen? ich habs versucht mit anführungszeichen in beliebigen kombinationen, aber das hilft nicht so wirklich (oder ich hab nicht alle kombinationen durchprobiert

moe

michael.sprick
04-08-2005, 12:58
Du kannst mit der Option -v Variablen in den awk scope einfügen...



#!/bin/bash
a=5
awk -v a=${a} '{print a + $1}' datei


hth, Michael :)

peschmae
04-08-2005, 15:28
Es geht auch direkt mit



print ENVIRON["a"]


MfG Peschmä

moedule
04-08-2005, 15:42
ah, genau, ich wußte doch das ich das schonmal gemacht hatte ...mit dem -v
dankeschön

moe