Sie sind nicht angemeldet.

1

03.05.2007, 12:19

[gelöst] sed

hallo leute,

habe ein problem mi sed. möchte in einer datei ein zeichen ersetzen. es soll durch den wert einer variable ersetzt werden. wie bringe ich das hin mit sed? versucht habe ich es damit.

var=val
sed 's/string/`echo $var`/g' file1 > file2

leider wird der string nicht druch val ersetzt. es kommt als ergebnis die wörtliche ausgabe "`echo $var`".

komme an der stelle grad nicht weiter.
wäre toll, wenn mir jemand helfen kann.

gruß thomas

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

2

03.05.2007, 16:54

RE: sed

du hast wohl bis jetzt php programmiert, oder wie kommt die zeile mit dem komischen echo-befehl zustande?

Zitat

var=val
sed 's/string/`echo $var`/g' file1 > file2

du solltest dich mit den möglichkeiten deiner shell
man sh
man bash
man was_auch_immer
mal auseinandersetzen.
naja und
man sed
wie wäre es zb mit

Zitat

var=val
sed "s/string/${val}/g" file1 > file2

die substitutionsfunktionalität erledingt die shell selbst, da braucht man kein echo!

wenn du das aber unbedingt willst :() , geht das natürlich auch durch eine kommandosubstitution, zb

Zitat

var=val
sed "s/string/$( echo ${val}) /g" file1 > file2
aber wozu sollte man das so umständlich machen, die zeile oben ist wesentlich besser.

man muss nur das richtige quoting benutzen.
siehe
man sh
man bash
man was_auch_immer
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

bonsai

Prof.Dr. Klugschiss

  • »bonsai« ist männlich

Beiträge: 1 486

Wohnort: N.de

Beruf: Informatiker

  • Nachricht senden

3

03.05.2007, 18:19

root@fsmirror02:/sysadmin/administration# man was_auch_immer
No manual entry for was_auch_immer

apt-get install was_auch_immer?
Die erste programmgesteuerte Rechenmaschine (Z1) wurde Mitte der 30er Jahre als "nicht patentwürdig" eingestuft. Warum versaut mir das Ding 50 Jahre später immer noch den Tag?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »bonsai« (03.05.2007, 18:24)


linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

4

03.05.2007, 18:49

Zitat

Original von bonsai
root@fsmirror02:/sysadmin/administration# man was_auch_immer
No manual entry for was_auch_immer
apt-get install was_auch_immer?

da befindet sich das paket was_auch_immer.irgendwas (.deb weiss ich nicht, obs das gibt) nicht in deinen installationsquellen =D
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

bonsai

Prof.Dr. Klugschiss

  • »bonsai« ist männlich

Beiträge: 1 486

Wohnort: N.de

Beruf: Informatiker

  • Nachricht senden

5

03.05.2007, 18:53

#deb file:///cdrom/ sarge main

dep http://ftp.nirgendwo.irgendwas.com/ stable main
deb http://ftp2.de.debian.org/debian/ stable main
deb-src http://ftp2.de.debian.org/debian/ stable main

deb http://security.debian.org/ stable/updates main

# The old source (woody) was necessary for the following packets:
# libstdc++2.9-glibc2.1 : necessary for the HP Tools
#deb http://ftp.de.debian.org/debian woody main


Und was ist das? ;)
Die erste programmgesteuerte Rechenmaschine (Z1) wurde Mitte der 30er Jahre als "nicht patentwürdig" eingestuft. Warum versaut mir das Ding 50 Jahre später immer noch den Tag?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »bonsai« (03.05.2007, 18:54)


6

05.05.2007, 11:12

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
katz@painless ~ $ more test
1
1
2
2
3
3

katz@painless ~ $ sed 's/2/tralala/g' test > test1

katz@painless ~ $ more test1
1
1
tralala
tralala
3
3

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »strcats oberste instanz« (05.05.2007, 11:14)


linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

7

05.05.2007, 11:17

Zitat

Original von strcats oberste instanz
katz@painless ~ $ sed 's/2/tralala/g' test > test1


das war nicht die frage, tralala sollte aus einer variable gelesen werden und das problem wurde bereits gelöst.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

8

05.05.2007, 12:03

Wozu Variablen wenn sie unnötig sind.

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

9

05.05.2007, 12:21

also ich glaube du solltest deinen namen ändern. von "strcats oberster instanz" ist wesentlich mehr zu erwarten. natürlich ist es sinnvoll, variablen zu verwenden, wenn zb der string in dem script vorher dynamisch erzeugt wird und davon gehe ich hier mal aus. das er die variable in der zeile vorher setzt, ist doch klar, da es sich ja nur um ein demonstrationsbeispiel handelt.

das hätte sogar "strcat absolut unterste und kleinste instanz" gesehen!
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

10

05.05.2007, 20:05

Glaub dem Strich in der Landschaft nix.

btw. Die Frage des OP steht in den FAQ von sed(1).
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

11

07.05.2007, 09:17

wiedermal großen dank an linuxerr - das quoting war das problem.

danke und gruß

thomas

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

12

07.05.2007, 12:21

bitte, gern geschehen :)
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Thema bewerten