Mittels AWK und einer Variablen suchen

R

ramann

Eroberer
Hi Zusammen,

ich versuche mit einem Bash-Script eine Datei nach bestimmten Werten auszulesen welche ich vorher per Variable übergebe - klappt aber nicht...

#!/bin/bash
if [ -f ./con_ports ]
then
while read liste
do
awk '$1 ~ /$liste/ {print}' con_ports > ergebniss
done < con_ports
fi

Das Problem scheint der Suchstring zu sein, welchen ich per Varibale zuweise...

Thanks
bjoern
 
Ja, auf Grund der einfachen Hochkommata, kann die Shell die Variable nicht übergeben und der AWK kann sie nicht lesen.

Ich weiß nicht genau was rauskommen soll, aber als Tip:
awk -v "myvar=${liste} '$1 ~ /$myvar/ {print}' con_ports > ergebniss
 
Hallo
Du kannst dir das while read sparen, da awk die Datei als Argument übergeben bekommt.

awk kennt auch eine Option -v. Auszug aus der Manpage:
-v var=val
--assign var=val
Assign the value val to the variable var, before execution of the program begins. Such variable values
are available to the BEGIN block of an AWK program.

Dort könntest du dein liste ganz normal initialisieren.

Gruß Wolfgang
 
Das mit der Variablen Zuweisung mittels

-v "myvar=${liste}

geht, aber leider wird

/$myvar/

nicht übernommen, das Vergleichen mit festen Werten ala /10/ ist keine Problem...

Das Ziel des Scriptes soll sein, eine Datei zu durchsuchen ob bestimmte Werte aus die in einer anderen Datei stehen, vorhanden sind. Die Werte die vorhanden sind sollen dann ausgegeben werden
 
AWK ist nicht grade mein Hauptgebiet, da ich für sowas lieber Perl verwende.

Aber IMHO ist /Pattern/{Action} mit Pattern als Variable nicht möglich.
Für solche Fälle würde ich die Funktion match (suchstring, "pattern") verwenden.

e.g.
Code:
SHELLVARIABLE="SUCHSTRING";
awk -v var=$SHELLVARIABLE 'match($1,var){print $1}' inputfile >Outputfile

Das dürfte zum Erfolg führen.

Gruß Wolfgang
PS AWK spricht private Variablen nicht mit $NAME sondern NAME an!
 
hallo, bin neu hier und bräuchte genau dein skript...
könntest den kompletten code reinsetzen?
 

Ähnliche Themen

Shell Skript beschleunigen

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

Sed: Bestimmtes Feld einer "Zeile mit mehreren Feldern" ergänzen

verzeichniss suche funktioniert nicht

Nach Variable fragen wenn die nicht als Parameter eingegeben wurde

Zurück
Oben