Variable bearbeiten

D

drm

Eroberer
Hallo,
wie löse ich folgendes Problem:
Ich habe eine Variable $test, dahinter verbirgt sich z. B. Esel&Elefant.

1) Wie mache ich aus Esel&Elefant ein Esel_Elefant (Sonderzeichen umwandeln in einen Unterstrich)???

2) Wie speicher ich z. B. $test mit dem Inhalt Esel&Elefant in eine neue Variable, in der dann nur Elefant steht (evtl. durch ausschneiden...)???

Vielen Dank für eure Hilfe :-)
 
1) Wie mache ich aus Esel&Elefant ein Esel_Elefant (Sonderzeichen umwandeln in einen Unterstrich)???

Das kannst du elegant mit "sed" machen.

2) Wie speicher ich z. B. $test mit dem Inhalt Esel&Elefant in eine neue Variable, in der dann nur Elefant steht (evtl. durch ausschneiden...)???

Dafür würde ich "cut" nehmen.

-> google mal nach sed und cut, da findest du sehr viele Beispiele.
 
$test='esel&elefant';
@test=split('&', $test);
$test=@zahlen[0];
#----
$test=join('_',@test);


so sollte es auch gehen:-)
 
Mmh, nach cut habe ich geschaut, aber irgendwie habe ich das Gefühl dass ich damit immer nur zeilenweise etwas aus einer Datei ausgeben kann. Das ist nicht mein Ziel, ich möchte in dem gleichen Shell-Skript von einer Variablen $test z. B. die Zeichen 5-10 ausschneiden... und zwar in eine neue Variable!

Zu sed: Hat vielleicht jemand ein Beispiel dafür?
 
Zuletzt bearbeitet:
@Wolfgang: Nutze die ksh, leider klappt dein Tausch von & zu _ damit nicht :-(

Gibt's nicht eine einfache Standardlösung wie man so ein kleines Problem lösen kann, in php wäre das z. B. nicht so ein Akt...
 
@Wolfgang: Nutze die ksh, leider klappt dein Tausch von & zu _ damit nicht :-(

Gibt's nicht eine einfache Standardlösung wie man so ein kleines Problem lösen kann, in php wäre das z. B. nicht so ein Akt...

Schön, dass wir nun wissen worüber wir reden. ;)

Aber du kannst für einzelne zeichen auch gut mit tr arbeiten.

Code:
var="test&test"
var2=$(echo $var|tr "&" "_")
echo $var2
test_test

Gruß Wolfgang
 
Bekomme es bei mir unter der ksh mit dem tr nicht ans Laufen...
Habe zwischen dem Pipe schon Leerzeichen gesetzt, aber es erfolgt keine Ausgabe.

@Wolfgang: Hast du noch eine Idee wie ich das ksh-konform anpassen kann?
Wir wissen ja jetzt worüber wir reden ;-)
 
Bekomme es bei mir unter der ksh mit dem tr nicht ans Laufen...

Was hast du versucht, und was war das Ergebnis?

Code:
$ var=test&test
$ echo ${var} |tr "&" "_"
test_test
echo ${var} |sed -e 's/[&]/_/g'
test_test

Was da bei dir falsch läuft, kann ich von hier aus nicht sehen.

Gruß Wolfgang
 
Hi Wolfgang,
versucht habe ich dein Beispiel 1 zu 1 umzusetzen...
Code:
var="test&test"
var2=$(echo $var|tr "&" "_")
echo $var2
test_test
Einen Fehler erhalte ich nicht, das Problem... eine Ausgabe auch nicht.
 
Dann solltest du mal versuchen das & zu escapen, oder in einfache Hochkomma setzen.

Code:
var="test&test"
echo $var
var='test&test'
echo $var
var="test\&test"
echo $var
Was kommt da bei dir raus?
Code:
var="test&test"
var2=$(echo $var|tr '&' '_')
echo $var2

Wolfgang
 
Hab's grad auf der ksh ausprobiert, sollte eigentlich klappen:

Code:
> VAR1="Esel&Elefant"
> echo ${VAR1%&*}
Esel
> echo ${VAR1#*&}
Elefant
> echo ${VAR1%&*}_${VAR1#*&}
Esel_Elefant
 
Moin,
wollte eine kleine Rückmeldung geben, und zwar hat Wolfgang mein Problem hiermit gelöst:
Code:
var="test&test"
var2=$(echo $var|tr '&' '_')
echo $var2
Vielen Dank dafür!!! Mein Skript läuft jetzt optimal :-)
 

Ähnliche Themen

Terminal Server Client behält die eingestellten Verbindungen nicht

Fedora: easyLife produzierte mehr Probleme als Lösungen

Heimserver Konfiguration für Ubuntu Server?!

Last mit etc/passwd anzeigen lassen

Maskiertes Suchen, Ersetzen und Rechnen in access.log vor weitere Bearbeitung

Zurück
Oben