![]() |
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier. |
Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
|
||||
| Faden | Thread Starter | Forum | Antworten | Last Post |
| Escape-Zeichen in tcsh | balareddy | Shell Programmierung und Scripting | 1 | 08-15-2008 06:58 AM |
| Escape-Zeichen | deepakpv | Shell Programmierung und Scripting | 4 | 02-16-2007 03:19 AM |
| awk / Escape-Zeichen | OFFSIHR | Shell Programmierung und Scripting | 8 | 11-29-2006 01:28 PM |
| Escape-Zeichen in vi? | stevefox | Shell Programmierung und Scripting | 4 | 11-17-2005 03:38 PM |
| möglich, aus dem \ Zeichen in sed? | gammaman | UNIX for Dummies Questions & Answers | 1 | 07-07-2005 03:49 PM |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
Hi All,
Wie schreibe ich in sed für den 6. und 7. Bereich der etc / passwd-Datei, da sie die Zeichen "/"? Ist mir unten ist richtig? Es ist unvollständig Skript als ich brauche Hilfe bei der Syntax, wie ich immer immer Mai Fehler ![]() Beispiel für etc / passwd-Datei: bla: x: 1055:600: bla bla: / home / bla: / bin / ksh sed "s / \ ($ name:.: [0-9] *: \) [0-9] *: \ (.* \): \ (\ / .* \ / .* \): \ (\ / .* \ / .* \) Zuletzt bearbeitet von c00kie88; am 10-07-2008 09:17 AM.. |
|
||||
|
Der Separator nach n kann jedes beliebige Zeichen. Also, ich würde empfehlen die Verwendung von Hochkommata um das Skript, es sei denn, Sie müssen speziell Anführungszeichen (in diesem Fall die Backslashes müssen verdoppelt werden). Code:
sed 's%\('"$name"':.:[0-9]*:\)[0-9]*:\(.*\):\(/.*/.*\):\(/.*/.*\) ...'
Beachten Sie, dass die Mischung aus Einzel-und doppelte Anführungszeichen oben. |
|
||||
|
es sieht so aus, als:
sed "s / \ ($ name:.: [0-9] *: \) [0-9] *: \ (.* \): \ (/.*/.* \): \ (/.*/ .* \) / \ 1 $ Antwort \ 2 / "/ etc / passwd Ich habe versucht die einzigen Angebots als Zeit vorgeschlagen, aber SED ist nicht zufrieden |
|
||||
|
Wiederholen Sie: Sie müssen die Backslashes verdoppeln, wenn Sie Anführungszeichen. Dies ist ein Artefakt des Shell Quoting-Mechanismen, die nicht der sed Syntax als solche. Wenn Sie den Schrägstrich als Trennzeichen, Sie müssen jeden Backslash Schrägstriche, die nicht Separatoren, aber es ist besser, einfach mit einem anderen Trennzeichen. Code:
sed "s%\\($name:.:[0-9]*:\\)[0-9]*:\\(.*\\):\\(/.*/.*\\):\\(/.*/.*\\)%\1$answer\2%" /etc/passwd Mit einfachen Anführungszeichen, dass sich Code:
sed 's%\('"$name"':.:[0-9]*:\)[0-9]*:\(.*\):\(/.*/.*\):\(/.*/.*\)%\1'"$answer"'\2%' /etc/passwd
Die Variablen $ name oder $ Antwort Natürlich kann nicht die Trennzeichen in ihren Werten (oder müssen Sie die Escape-Werte). Zuletzt bearbeitet von ERA; 10-08-2008 auf 03:15 AM.. Grund: Need Variablen zu entkommen, wenn sie das Trennzeichen |
|
||||
|
Sie sind nicht kopieren + Einfügen richtig, und sich nicht zurück, was die Fehlermeldung ist. "Still no good" ist nicht eine nützliche Diagnostik. Aber, wenn Sie sorgfältig mit der Maus kopieren + fügen die Befehle oben, und sorgfältig Kopie + paste Fehler wieder hier, wir können um Ihnen zu helfen.
"Unbekannte Option s" bedeutet, dass Sie etwas nach (was sed meint ist) die letzte, die Trennlinie ist keine gültige Option für s / von / bis / GP (hier "g" und "P" sind die Optionen). In diesem Fall ist es einfach, weil Sie noch mit Schrägstrich als Trennzeichen, ohne die Flucht Schrägstriche, die nicht Separatoren. Ändern Sie die Trennlinie%, oder aus der Schrägstriche werden. Auch Ihr Befehl ist teilweise, Sie fehlen die "auf" Teil \ 1 $ Antwort \ 2 |
![]() |
| Lesezeichen |
| Tags |
| Quoting, sed Syntax |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|