The UNIX and Linux Forums  


Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



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
ersätta charandevu Shell-programmering och Skript 6 04-07-2008 12:30
Hur ersätter i Vi ravi.sadani19 Shell-programmering och Skript 5 06-25-2007 10:30
Ersätt \ n med \ r \ n Chanakya.m Shell-programmering och Skript 3 07-19-2006 08:20
Hur kan man ersätta med hjälp SED? Mahatma Shell-programmering och Skript 4 03-23-2006 03:04
Ersätt jda2001 UNIX for Dummies Frågor & Svar 2 09-06-2005 03:20

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 01-15-2008
naikaa naikaa is offline
Registered User
  
 

Join Date: Jan 2008
Inlägg: 2
ersätta sista / av |

Hej:

Jag vill skriva en Kshell script som kommer att ersätta senaste / av |.

t.ex.: / home / apps / test / dokument bör ersättas med / home / apps / test | dokument.

Längden på strängen är inte konstant.

Tack,
Ash
  #2 (permalänk)  
Old 01-15-2008
ghostdog74 ghostdog74 is offline Forum Advisor  
Registered User
  
 

Join Date: Sep 2006
Inlägg: 2556

Kod:
# echo "/home/apps/test/document" | sed 's/^\(.*\)\/\(.*\)/\1\|\2/'
/home/apps/test|document


Senast redigerad av ghostdog74; 01-15-2008 vid 05:38..
  #3 (permalänk)  
Old 01-15-2008
reborg's Avatar
reborg reborg is online now Forum Staff  
Administratör
  
 

Join Date: mars 2005
Ort: Irland
Inlägg: 4.245

Kod:
sed 's_/\([^/]+\)$_|\1_'

  #4 (permalänk)  
Old 01-15-2008
drl's Avatar
varselljus drl is offline Forum Advisor  
Registered User
  
 

Join Date: april 2007
Ort: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Inlägg: 714
Hej.
Citat:
Ursprungligen postat av reborg View Post
Kod:
sed 's_/\([^/]+\)$_|\1_'
Jag var tvungen att använda "*" i stället för "+". Vissa versioner av sed kan behöva "-r" för att använda utvidgade reguljära uttryck, där parens måste också ändras:

Kod:
#!/bin/sh -

# @(#) user2    Demonstrate replacement of last specific character, sed.

sed --version | head -1

echo
echo " Original:"
echo "/home/apps/test/document" |
sed 's_/\([^/]+\)$_|\1_'

echo
echo " Modified:"
echo "/home/apps/test/document" |
sed 's_/\([^/]*\)$_|\1_'

echo
echo " Original with -r:"
echo "/home/apps/test/document" |
sed -r -e 's_/([^/]+)$_|\1_'

exit 0

Produktion:

Kod:
% ./user2
GNU sed version 4.1.2

 Original:
/home/apps/test/document

 Modified:
/home/apps/test|document

 Original with -r:
/home/apps/test|document

Det finns (alltför) många versioner av sed, Så man måste veta vilken version man använder. Till exempel, om du skulle lämna "\ (", "\)" i 3: e exempel, skulle du få ett felmeddelande om "ogiltigt hänvisning \ 1", inte särskilt informativ, åtminstone inte direkt ... Skål, varselljus
  #5 (permalänk)  
Old 01-15-2008
reborg's Avatar
reborg reborg is online now Forum Staff  
Administratör
  
 

Join Date: mars 2005
Ort: Irland
Inlägg: 4.245
Egentligen, vad jag tänkte efter var det, men blev distraherad av ett awk script:


Kod:
sed 's_/\([^/][^/]*\)$_|\1_'

Om du menar något följt av minst en annan karaktär, vara explicit.
  #6 (permalänk)  
Old 01-15-2008
V3l0 V3l0 is offline
Registered User
  
 

Join Date: Nov 2007
Plats: Belgien / Frankrike
Inlägg: 70

Kod:
cr=$(echo /tutu/tatat/titi/tutu | awk -F/ '{ print $NF; }')
echo /tutu/tatat/titi/tutu | sed -e 's/\/'$cr'$/|'$cr'/'
/tutu/tatat/titi|tutu

  #7 (permalänk)  
Old 01-17-2008
naikaa naikaa is offline
Registered User
  
 

Join Date: Jan 2008
Inlägg: 2
Hej guyz:

Tack för din hjälp. Esp Reborg använde jag ditt förslag, och det fungerar mycket väl.

Tack!
Closed Thread

Komihåglista

Taggar
regex, reguljära uttryck

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 09:33.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0