kleines sed problem

K

knumskull

Foren As
Moin,

habe eine Zeile die ungefähr folgendermaßen aussieht.

Code:
abcdefgh123 -t 06123456 hhffgrhdj1312

aus dem Konstrukt möchte ich die stelle

Code:
-t 06123456
herauskopieren, das -t durch -a ersetzen und die zahlenfolge wieder anfügen. das am ende halt

-a 06123456 in einer Variable steht.

folgenden Lösungsansatz habe ich bis jetzt, jetzt hänge ich allerdings und weis nicht in welcher Form ich fortfahren soll. Könnt ihr mir Tipps geben?

Code:
sed 's/-t.[0-9]\{8\}/-a/'
 
oder kurz anders, wie kann ich zum Beispiel die Sachen, die ich da rausfiltere in eine Variable schreiben. Und dann kann ich ja danach nochmal mit sed ran.

Code:
sed 's/-t[[:space:]][0-9]\{8\}/ /'

das liefert, bzw enthält ja den ausdruck -t 06123456. Wie kann ich den jetzt weiterverarbeiten.
 
Hallo knumskull

Ich verstehe nicht ganz was du machen willst, entspricht das etwa dem was du willst?
Code:
sed 's/\-t\(.[0-9]\{8\}\)/-a\1/'

Gruss
d22
 
also was ich am ende genau haben will ist folgendes

Code:
-a 06123456

in einer Variablen
 
Ahso, stand grad aufm Schlauch, sry...
Code:
export variable=$(sed 's/.*-t\(.[0-9]\{8\}\).*/-a\1/' infile.txt)
das sollte klappen...

Gruss
d22
 
habe grad irgendwie wieder nen kleines Problemchen.

Code:
echo $@ > /tmp/vTime.tmp

vTimeTmp=$(sed 's/.*-t\([[:blank:]][0-9]\{8\}\).*/-a\1/' /tmp/vTime.tmp)
if [ `$vTimeTmp | grep -e '-a[[:blank:]]'` ] ; then
        vTime=$vTimeTmp
        shift
        shift
fi

also die sachen in der if-abfrage, soll halt auch nur ausgeführt werden, wenn dieser vorher ausgefilterte "-t 06123465" string auftaucht. Wie weiter?
 
Hallo

Wenn du so machst:
Code:
vTimeTmp=$(sed -n 's/.*-t\([[:blank:]][0-9]\{8\}\).*/-a\1/ p' /tmp/vTime.tmp)
ist die Variable 'vTimeTmp' nur voll wenn 'sed' 'gematcht' hat...

jetzt kanst du mit [ -n $vTimeTmp ] testen...

Gruss
d22
 
klappt irgendwie nicht ganz

beim aufruf
Code:
-bash-3.00$ abq651_32_single_1 -t 10261100 Testjob.inp
Your job 141467 ("Testjob") has been submitted.
-bash-3.00$ abq651_32_single_1 Testjob.inp
Usage: /opt/n1ge6/bin/abq651_32_single_1 inputfile args ...

also grob gesagt, wenn der -t parameter nicht mit angegeben wird, kommt der fehler. und wenn ich jetzt nochmal nen "echo $vTimeTmp" ausgebe, in der Klammer dann kommt folgender auswurf

Code:
-bash-3.00$ abq651_32_single_1 Testjob.inp

Usage: /opt/n1ge6/bin/abq651_32_single_1 inputfile args ...


/edit!!
hab meinen Fehler gefunden. Danke nochmal der schnellen antwort. Es geht jetzt
 
Zuletzt bearbeitet:
Freut mich wenns klappt, wo war denn der Fehler?
 
hatte

if [ n $vTimeTmp ] anstatt if test -n ... :)

klarer fall von Müdigkeit und so *g*
 
;) solche Fehler sind die mühsamsten...
Kenn ich nur zu gut

Gruss
d22
 

Ähnliche Themen

Zeilen kopieren mit SED

Queue für copy Script

Problem mit Apache2 + MySQL Server

Word too long!

sed im script per crontab

Zurück
Oben