grep?

S

schlawiner

Jungspund
Hallo,

ich habe eine Variable $test1 die folgende ausgabe bringt

+set dedicated 2 +exec server.cfg +exec fastdl.cfg +set net_ip 213.89.12.5 +set net_port 28960 +set sv_maxclients 20 +set fs_basepath ./ +set fs_homepath ./.callofduty4 +set fs_game mods/promodlive204 +set sv_punkbuster 1 +g_password +map_rotate

wie filter ich nun da die 213.89.12.5 und mods/promodlive204 raus und setze die beiden in je eine variable.

Dachte mit grep aber komme auf keine lösung da sich die ip (ausser die 84) und auch der mod (ausser mods/) ändern kann.
 
Code:
grep  -Eo "[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}"
liefert dir immerhin schonmal die IP-Adresse aus der ersten Zeile:
Code:
{-alex-|-asterix-} => [~]
(14:24:35) echo "+set dedicated 2 +exec server.cfg +exec fastdl.cfg +set net_ip 213.89.12.5 +set net_port 28960 +set sv_maxclients 20 +set fs_basepath ./ +set fs_homepath" | grep  -Eo "[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}"
213.89.12.5
 
Hallo,

Code:
schard@thinkpad:~» TEST="+set dedicated 2 +exec server.cfg +exec fastdl.cfg +set net_ip 213.89.12.5 +set net_port 28960 +set sv_maxclients 20 +set fs_basepath ./ +set fs_homepath ./.callofduty4 +set fs_game mods/promodlive204 +set sv_punkbuster 1 +g_password +map_rotate"
schard@thinkpad:~» echo $TEST | cut -d "+" -f [B]5[/B] | cut -d " " -f 3
213.89.12.5
schard@thinkpad:~» echo $TEST | cut -d "+" -f [B]10[/B] | cut -d " " -f 3
mods/promodlive204
schard@thinkpad:~»
 
Hallo das mit dem /mods/pro..... funzte nicht ganz ich habs nun so gelöst cfgpfad1=`echo $* | awk -F\fs_game '{print $2}' | awk -F + '{print $1}'`

wie kann ich nun die satrtparameter nach dem parameter fs_game furchsuchen, ich dachte so aber das funktionierte ned da es wohl keine textdatei is

if cat $* | grep "fs_game..." ; then
cfgpfad=$cfgpfad1
else
cfgpfad=$cfgvar
fi
 
Also ich fasse mal zusammen um nun noch die etwas kleineren probs zu klären

Die IP bekomme ich durch: gsip=`echo "$*" | grep -Eo "[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}"`

funktioniert wunderbar

Den Modordner bekommen ich durch cfgpfad=`echo $* | awk -F\fs_game '{print $2}' | awk -F +set '{print $1}'`

kann den modpfad wunderbar rauslessen nur gibt er mit das leerzeichen aus den parametern mit aus.
folgende Fehlermeldung sobald das script in den Ordner schreiben will

./cod4_run: line 54: mods/promodlive204 /config.cfg: No such file or directory


zu guter letzt brauche ich noch die Möglichkeit das dieses Script die Serverstartparameter $* nach dem Begriff fs_game durchsucht

Sprich ist fsgame vorhanden

soll er den der parameter so ausgegeben werden

cfgpfad=`echo $* | awk -F\fs_game '{print $2}' | awk -F +set '{print $1}'`

wenn nicht dann

cfgpfad=main


ich danke Euch für die bisherige hilfe
 

Ähnliche Themen

Frage zu Bash Script mit Grep Ausgabe

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

CentOS 6.3 RADIUS - Keine Verbindung möglich

dovecot und postfix Konfiguration Problem

Routing Problematik

Zurück
Oben