The UNIX and Linux Forums  
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.

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
dont't hitta rätt regex Trek Shell-programmering och Skript 3 05-27-2008 12:20
regex test i bash subin_bala Shell-programmering och Skript 1 04-16-2008 03:27
Enkel KLÅ script? JayC89 Shell-programmering och Skript 16 10-02-2007 07:23
hitta-regex: matchningsalternativ flera förlängningar r0sc0 Shell-programmering och Skript 2 12-08-2005 02:32
kommando hittar returnerar bash: / usr / bin / hitta: Argument listan är för lång yacsil Shell-programmering och Skript 1 12-15-2003 06:38

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 03-17-2008
srikanths srikanths is offline
Registered User
  
 

Join Date: mars 2008
Inlägg: 4
Ett enkelt hitta och ersätta utan att använda någon regex (bash)

Hej,

Jag måste göra en exakt hitta och ersätta (Jag vill inte använda vanliga uttryck eftersom input från användare). Jag vill hitta en linje som matchar användarens inmatade texten och ersätta den med en tom sträng.

Låt oss exempelvis säga användaren anger Jag älskar "Unix" och innehållet i filen där jag vill göra Sök och ersätt är:

Kod:
I like "Unix" more than DOS
I love "Unix"
I said I love "Unix"
I love "Unix" a lot
Nu vill jag byta linje Jag älskar "Unix" med tom sträng. Och jag vill lämna resterande linjer såsom Jag sa att jag älskar "Unix" och Jag älskar "Unix" mycket som den är. Den dubbla citattecken är avsiktliga.

Vilka Unix verktyget kan göra detta? Ett exempel kan vara bra! Jag sökte och fann att sed är något som ligger nära vad jag letar efter, men det tar ett vanligt uttryck. Eftersom input string kommer från användaren, det är tufft för mig att skapa ett vanligt uttryck för det. Alla andra sätt?

Tack!
  #2 (permalänk)  
Old 03-18-2008
eran
Gästens
  
 

Inlägg: n / a
Bitar: 0 [Banking]
Mannen grep

Kod:
read input
fgrep -vx "$input" file
Det tar bort linjen helt och inte ens lämna newline. Om du behöver det newline ska bevaras, det är lite svårare.

Det är inte alltför svårt att skapa en ordentlig vanligt uttryck i sig, men det tenderar att vara lite ful.

Kod:
read input
echo "$input" | sed -e 's/[][\\.*^$]/\\&/g; s/.*/s%^&\$%%/' | sed -f - file
Detta är oprövade, och som är avsedda enbart som ett bevis för konceptet. Jag förmodligen glömt en eller två specialtecken som måste bakstreck ersatta. (Tips: Ta bort den sista delen av rörledningen för att se det genererade skriptet.)
  #3 (permalänk)  
Old 03-18-2008
eran
Gästens
  
 

Inlägg: n / a
Bitar: 0 [Banking]
Åh, och om du verkligen är strikt om bash, prova detta:

Kod:
read input
while read line; do
  case $line in
    $input) echo ;;  # or not, if you want the newline gone, too
    *) echo "$line";;
  esac
done <file
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 07:39.


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