![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| escape-teken in tcsh | balareddy | Programmeren en Shell Scripting | 1 | 08-15-2008 06:58 |
| Escape character | deepakpv | Programmeren en Shell Scripting | 4 | 02-16-2007 03:19 |
| awk / ontsnappen karakter | OFFSIHR | Programmeren en Shell Scripting | 8 | 11-29-2006 01:28 PM |
| Escape character in vi? | stevefox | Programmeren en Shell Scripting | 4 | 11-17-2005 03:38 PM |
| mogelijk om te ontsnappen aan de \ teken in sed? | gammaman | UNIX voor Dummies Questions & Answers | 1 | 07-07-2005 03:49 PM |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Hi All,
Hoe schrijf ik in sed voor het 6de en 7de gebied van etc / passwd bestand als het gaat om "/" karakter? Is de mijne hieronder is juist? Het is onvolledig script als ik hulp nodig heb met syntaxis zoals ik altijd krijg mei fouten ![]() Voorbeeld van etc / passwd bestand: blah: x: 1055:600: blah blah: / home / bla: / bin / ksh sed "s / \ ($ naam:.: [0-9] *: \) [0-9] *: \ (.* \): \ (\ / .* \ / .* \): \ (\ / .* \ / .* \) Laatst gewijzigd door c00kie88; op 10.07.2008 09:17.. |
|
||||
|
De separator na s kan elk karakter. Ook ik zou raden u enkele aanhalingstekens rond het script, tenzij u uitdrukkelijk moeten dubbele aanhalingstekens (in welk geval de backslashes moeten worden verdubbeld). Code:
sed 's%\('"$name"':.:[0-9]*:\)[0-9]*:\(.*\):\(/.*/.*\):\(/.*/.*\) ...'
Let op de mix van enkele en dubbele aanhalingstekens hierboven. |
|
||||
|
Het ziet er als:
sed "s / \ ($ naam:.: [0-9] *: \) [0-9] *: \ (.* \): \ (/.*/.* \): \ (/.*/ .* \) / \ 1 $ antwoord \ 2 / '/ etc / passwd Ik probeerde enkele aanhalingstekens als tijdperk gesuggereerd, maar SED is niet gelukkig |
|
||||
|
Herhaal: je moet het dubbele backslashes als u gebruik dubbele aanhalingstekens. Dit is een artefact van de shell's citeren mechanismen, niet van sed syntaxis als zodanig. Als u gebruik maken van de schuine streep als scheidingsteken, hebt u behoefte aan backslash geen slashes die niet scheidingstekens, maar het is beter om gewoon met een ander scheidingsteken. Code:
sed "s%\\($name:.:[0-9]*:\\)[0-9]*:\\(.*\\):\\(/.*/.*\\):\\(/.*/.*\\)%\1$answer\2%" /etc/passwd Met enkele aanhalingstekens, dat wordt Code:
sed 's%\('"$name"':.:[0-9]*:\)[0-9]*:\(.*\):\(/.*/.*\):\(/.*/.*\)%\1'"$answer"'\2%' /etc/passwd
De variabelen $ naam of $ antwoord uiteraard niet het scheidingsteken in hun waarden (of je moet ontsnappen aan de waarden). Laatst gewijzigd door tijdperk; op 10.08.2008 03:15.. Reden: Behoefte om te ontsnappen aan variabelen als zij het scheidingsteken |
|
||||
|
U bent niet kopiëren + plakken correct, en niet de rapportage terug wat de foutmelding is. "Nog steeds geen goed" is niet een nuttige diagnostische. Maar als je zorgvuldig gebruik van uw muis te kopiëren + plak de commando's hierboven en zorgvuldig kopiëren + plakken eventuele fouten terug, we kunnen je helpen.
"Onbekende optie s" betekent dat je iets na (wat sed denkt is) de definitieve scheidingsteken dat geen geldige optie voor s / van / naar / gp (hier, "g" en "P" zijn opties). In dit geval, het is gewoon omdat je nog steeds gebruik maken van de schuine streep als scheidingsteken, zonder ontsnapt die slashes die niet scheidingstekens. Wijzig de separator naar%, of ontsnappen aan de slashes als dat nodig is. Ook uw commando gedeeltelijke, je mist de "aan" deel \ 1 $ antwoord \ 2 |
![]() |
| Bladwijzers |
| Labels |
| citeren, sed syntaxis |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|