Variablen Übergabe von BSH zu AWK

T

Tittipoco

Jungspund
moin moin !!

Ich habe in meinem standard BSH shell script eine Variable belegt

BSP:
WURST = AA

jetzt möchte ich diese Variable mit AWK nutzen ! und zwar habe ich eine schleife gebastelt und möchte folgendes machen :
cat IRGENDEINE.TXT | grep IRGENDWAS | awk '{print $WURST,$1,$6}'

$WURST soll halt immer eine Fixe Variable sein und nur $1 und $6 ändern sich immer !##hoffe ihr versteht mein problem und könnt mir helfen

freue mich auf eure nachrichten !
 
$1,... sind ja die Positionsparameter
$WURST hast du ja belegt (Belegt man Variablen mit Text nicht so: WURST ="AA"?)

Was hast du für ein Problem?
 
Hallo
Typischer Fall von useless use... ;)

awk kann selbst die Datei einlesen, und matchen!
Ausserdem kennt awk die Option -v Var=Wert.

Code:
awk -v WURST=WERT '/pattern/{print WURST, $1, $6}' Datei

Gruß Wolfgang
edit: was meinst du mit BSH?
 
BSH = Bash shell

ok, wie genau funktioniet das ? angenommen die Variable WURST soll den Inhalt : CKZ haben..
was genau setzt man bei WERT und was bei pattern ? ist pattern der Inhalt an sich und WERT , wie man das in awk anspricht ? also $1,$6,$WERT ?

und @ root :
ja so beleg ich die eigneltich auch .. muss tdu ja aber nicht !

PS: warum useless use ??!!??
 
Hallo
Du hast aber nicht einen einzigen Blick in die man awk geworfen.
/Pattern/ ist der String, nach dem du mit grep suchst.
Variablenzuweisung:
Bei mir ist der Inhalt der Variablen Wurst=Wert.
useless use of cat and grep!
Weil cat und grep nicht nötig sind.
Das sind zwei sinnlose Prozesse mehr.
cat gibt den Inhalt der Datei aus.
grep sucht nach Pattern.
Das kann awk alles selbst.
Wenn du awk schon aufrufst, dann kannst du das alles damit selbst erledigen. -> Ein einziger Prozess für alle Aufgaben.

Gruß Wolfgang
edit:
In awk werden Variablen lexikalisch angesprochen. Also kein $ davor. Das gilt nur für interne Variablen wie die Positionsparameter.
Du kannst auch Klartext mit print ausgeben, dann musst du diesen aber quoten.
Code:
awk '/suchstring/{print "Mein eigener Text", $1, $2} Eingabedatei
 
Zuletzt bearbeitet:
als ob ich das mit cat und grep nicht wüsste ;-) danke, aber ich brauche cat und sed um eine vorhandene TXT auf die auswahl zu beschränken die für ide weitere verarbeitung für mich von nöten ist. mag sein das AWK das selbst kann, ok aber ich mach es damit ! sollte auch kein problem in bezug auf die variablen übergabe darstellen. aber ich komme erst morgen dazu, deinen ansatz zu testen ! ich danke hier shconmal für eure hilfe und werde mich morgen wieder melden !
 
als ob ich das mit cat und grep nicht wüsste ;-)
Ich habe dir nur auf deine Frage nach dem useless use geantwortet.
Warum du nun trotzdem sed oder grep oder cat brauchst, ist mir nicht klar.

Du hast meinen Nachtrag gelesen?

Gruß Wolfgang
 
"mein eigener Text" steht aber in einer Variablen, das ist ja das problem ! ich habe mein script jetzt leider nicht auswendig im kopf, deswegen kann ich auch erst morgen den nötigen code dafür liefern

habe nachtrag eben gelesen, und war von mir auch nicht als "lächerlich" gemeint eben .. dachte nur du hättest mein problem noch nicht ganz verstanden.

ich werde morgen versuchen deine tipps anzuwenden und mich dann hier wieder ( mit dem dazu passenden code) melden :-) danke für eure hilfe
 
Hallo
wenn dein einzufügender Text in einer Shellvariable steht, dann nütze die Variante mit der Option -v WURST=$VAR.
awk -v WURST=$SHELLVARIABLE '/SUCHSTRING/{print WURST, $1, $6}' Datei
Hoffe etwas geholfen zu haben
Gruß Wolfgang
 
Super, danke Wolfgang :-D genau so funktioniert es !! habe ich in meinem AWK/SED Buch nicht finden können !!
danke schön
 

Ähnliche Themen

awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

PHP Variable mit Systemkommando

prozessor auslastung DRINGEND hilfe !

Mehrere Strings ausschneiden und als Array speichern

Zurück
Oben