Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
roll
- Beiträge: 75
- Registriert: 29.06.2005 14:21:27
- Wohnort: SCHWEIZ
-
Kontaktdaten:
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
-
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
-
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
-
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
-
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