![]() |
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| undgå karaktär tcsh | balareddy | Shell-programmering och Skript | 1 | 08-15-2008 05:58 |
| Escape karaktär | deepakpv | Shell-programmering och Skript | 4 | 02-16-2007 03:19 |
| awk / fly karaktär | OFFSIHR | Shell-programmering och Skript | 8 | 11-29-2006 01:28 |
| Escape karaktär vi? | stevefox | Shell-programmering och Skript | 4 | 11-17-2005 03:38 |
| möjligt att undgå \ karaktär sed? | gammaman | UNIX for Dummies Frågor & Svar | 1 | 07-07-2005 02:49 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Hej Alla,
Hur skriver jag i sed för den 6: e och 7:e området etc / passwd-filen, eftersom det innehåller tecknet "/"? Har min nedan är korrekta? Det är ofullständigt manus som jag behöver hjälp med syntax som jag alltid får maj fel ![]() Exempel på etc / passwd-filen: bla: x: 1055:600: blah blah: / home / bla: / bin / ksh sed "s / \ ($ namn.: [0-9] *: \) [0-9] *: \ (.* \) \ (\ / .* \ / .* \) \ (\ / .* \ / .* \) Senast redigerad av c00kie88; 10-07-2008 vid 08:17.. |
|
||||
|
Avgränsaren efter er kan någon karaktär. Dessutom rekommenderar jag att du använder enkla citationstecken runt script om du inte uttryckligen behöver citationstecken (i vilket fall den omvända snedstreck måste fördubblats).
Kod:
sed 's%\('"$name"':.:[0-9]*:\)[0-9]*:\(.*\):\(/.*/.*\):\(/.*/.*\) ...'
|
|
||||
|
Upprepa: du behöver fördubbla omvända snedstreck om du använder citationstecken. Detta är en artefakt av tankskalets citera mekanismer, inte av sed syntax som sådan. Om du använder snedstreck som separator, du måste bakstreck alla snedstreck som inte separatorer, men det är bättre att helt enkelt använda en annan separator karaktär.
Kod:
sed "s%\\($name:.:[0-9]*:\\)[0-9]*:\\(.*\\):\\(/.*/.*\\):\\(/.*/.*\\)%\1$answer\2%" /etc/passwd Kod:
sed 's%\('"$name"':.:[0-9]*:\)[0-9]*:\(.*\):\(/.*/.*\):\(/.*/.*\)%\1'"$answer"'\2%' /etc/passwd
Senast redigerad av era; 10-08-2008 vid 02:15.. Motivering: Behov av att fly variabler om de innehåller avgränsaren |
|
||||
|
Du är inte kopiera + klistra korrekt och inte rapportera tillbaka vad felmeddelandet. "Fortfarande ingen bra" inte är en användbar diagnos. Men om du försiktigt använda musen för att kopiera + klistra in kommandon ovan och noggrant kopia + klistra eventuella fel hit, vi kanske kan hjälpa dig.
"Unknown option att s" innebär att du har något efter (vad sed tycker är) Sista separator som inte är ett realistiskt alternativ för s / från / till / gp (här, "g" och "p" är alternativ). I det här fallet, det är bara för att du fortfarande använda snedstreck som avgränsare, utan flyr de snedstreck som inte separatorer. Ändra avgränsare till% eller undgå snedstreck som krävs. Även ditt kommando är partiell, du missar "till" en del \ 1 $ svara \ 2 |
![]() |
| Komihåglista |
| Taggar |
| citera, sed syntax |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|