PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sed Zeichen löschen, 2 Fragen



zagadka
19-05-2006, 23:44
Hallo,

ich möchte aus einer Datei bzw. String $1-$9 entfernen.


Host: $0*$4*$6* $2Cat's $9| $1FunServer $0*$4*$6* $9-=XT-V2=-
Ping: 0 ... usw.


Wenn ich jetzt sed ansetze die komplette Datei zu durchkämmen ..

sed 's/$./''/g' file1 > file2 bzw. sed 's/$.//g' file1 > file2

sieht das in file2 gut aus.



Host: *** Cat's | FunServer *** -=XT-V2=-
Ping: 0 ....


Führe ich das komplette Skript aus



# ...
sed 's/$./''/g' file1 > file2

host=`sed -n -e '/Host:/p' $file2 | sed -e 's#Host:##g'`;
ping=`sed -n -e '/Ping:/p' $file2 | sed -e 's#Ping: ##g'`;
# ...

echo Host: $host
echo Ping: $ping


erhalte ich für die Host-Variable die Dateien des Verzeichnisses aufgelistet



ed.txt fcneu-filt.txt fcneu.txt fc-player-filtered.txt fc-player.txt fctest1.sh fctest.sh huhn.txt serverfiltern.sh serverfiltern.sh~ serverfiltern.v1.sh serverfiltern.v2.sh serverfiltern.v2.sh~ servertest.sh Cat's | FunServer farcry-server-online.sh fc-ausgabe.txt fc-doku.txt fcneu2.txt fcneu-filtered.txt fcneu-filt.txt fcneu.txt fc-player-filtered.txt fc-player.txt fctest1.sh fctest.sh huhn.txt serverfiltern.sh serverfiltern.sh~ serverfiltern.v1.sh serverfiltern.v2.sh serverfiltern.v2.sh~ servertest.sh -=XT-V2=-
Ping: 0


Ändere ich das Ersatzzeichen im sed von '' auf irgendein anderes Zeichen z.B. x wird richtig ersetzt und ausgegeben.

----

Zweite Frage:

Wenn ich nun einen String auf die gleich Art filtern möchte funktioniert folgendes:



player1='$4einst$1zwei$4drei'
echo $player1 | sed 's/$./''/g';


Aber wie bekomme ich das Ergebnis in eine Variable?



# geht nicht
player1='$4einst$1zwei$4drei'
$player1_filtered=`echo $player1 | sed 's/$.//g'`;


Gruß

peschmae
20-05-2006, 09:42
1)
In der Variable $host ist ein * - wenn du das einfach so mit echo ausgibst wird das durch den Inhalt des aktuellen Verzeichnisses ersetzt. Um das zu Verhindern machst du z.B. ein
echo "Host: $host"

2)
das hast du doch oben schon gemacht:
player1_filtered=`echo $player1 | sed 's/$.//g'`
also ohne $ vor dem Variablennamen.

MfG Peschmä

zagadka
20-05-2006, 12:11
1)
In der Variable $host ist ein * - wenn du das einfach so mit echo ausgibst wird das durch den Inhalt des aktuellen Verzeichnisses ersetzt. Um das zu Verhindern machst du z.B. ein
echo "Host: $host"

2)
das hast du doch oben schon gemacht:
player1_filtered=`echo $player1 | sed 's/$.//g'`
also ohne $ vor dem Variablennamen.

MfG Peschmä
Besten Dank dafür, das bringt mich weiter!

Gruß, Rupert

sagi
29-05-2006, 22:50
Du schreibst in die Datei 'file2' liest aber aus der Datei, die in der Variablen '$file2' definiert ist. Ist das nur ein Tippfehler in deinem Posting, oder steht das wirklich so in deinem Skript?

mfg
c.

zagadka
30-05-2006, 19:32
Du schreibst in die Datei 'file2' liest aber aus der Datei, die in der Variablen '$file2' definiert ist. Ist das nur ein Tippfehler in deinem Posting, oder steht das wirklich so in deinem Skript?

mfg
c.
Nur ein Tippfehler.
Gruß