SED mit variable $value ????

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
roll
Beiträge: 75
Registriert: 29.06.2005 14:21:27
Wohnort: SCHWEIZ
Kontaktdaten:

SED mit variable $value ????

Beitrag von roll » 10.08.2005 08:15:07

Wieder ein SED problem von mir!

bevor ich sed aufrufe in meinem script, wird einer variable der wert zugewiesen welcher sed zum suchen braucht.

das problem ist wieder, wie bringe ich sed dazu, die variable zu interpretieren?

Code: Alles auswählen

 sed '/"$i"/ c\"$i" nb-es\' /tmp/hosts > /tmp/hostsssssssss
 sed '/$i/ c\$i nb-es\' /tmp/hosts > /tmp/hostsssssssss
leider funktionieren diese beiden varianten nicht :-(

danke für eure tips
..::ROLL::.. [ http://www.debian.org ]

Benutzeravatar
Pischti
Beiträge: 417
Registriert: 20.02.2002 12:54:18
Wohnort: dresden

Beitrag von Pischti » 10.08.2005 08:27:18

problem sind die einfachen hochkommas ( ' ), damit wird der string nicht geparst ....
gruss pischti
debian stable

Benutzeravatar
roll
Beiträge: 75
Registriert: 29.06.2005 14:21:27
Wohnort: SCHWEIZ
Kontaktdaten:

Beitrag von roll » 10.08.2005 08:35:30

DANKE, nur leider bringt mich das nicht weiter.
ich habe etwas gelesen, dass man die variabel so soll schreiben bei sed:

${value}

weiss aber nicht wie das gehe soll, und hat auch nicht funktioniert

Code: Alles auswählen

sed '/${i}/ c\${i} nb-es\' /tmp/hosts > /tmp/hostsssssssss
..::ROLL::.. [ http://www.debian.org ]

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 10.08.2005 09:07:43

Es ist ja nicht Sed was die Variable ersetzen soll - sondern die Bash. Und die macht das wie schon von Pischti gesagt nicht, wenn du den String in ' ' einschliesst. Am besten nimmst du statdessen " - da wird sie nämlich von der bash interpretiert.

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
roll
Beiträge: 75
Registriert: 29.06.2005 14:21:27
Wohnort: SCHWEIZ
Kontaktdaten:

Beitrag von roll » 10.08.2005 09:27:19

danke an alle

Das problem war, dass die bash die variable interpretiert oder ersetzt mit dem variablen-wert braucht es die " - " ich musste nun noch die backslashs \ "escapen" mit \\ das hat ich vergessen

Code: Alles auswählen

sed "/$i/ c\\$i nb-es\\" /tmp/hosts >> /tmp/hostsssssssss
ES FUNKTIONIERT :-)
..::ROLL::.. [ http://www.debian.org ]

Antworten