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
Ta bort katalogen som specialtecken datherriault UNIX for Dummies Frågor & Svar 12 01-14-2009 05:53
ta bort särskilda och Unicode-tecken shantanuo UNIX for Dummies Frågor & Svar 1 12-05-2008 09:16
Ta bort varar tecken från en sträng chriss_58 Shell-programmering och Skript 6 11-28-2008 06:07
Hjälp med att hitta och ersätta w / string som innehåller specialtecken CAGIRL UNIX for Dummies Frågor & Svar 4 10-07-2008 08:13
Lägg sträng efter en annan sträng med specialtecken heliode Shell-programmering och Skript 2 03-21-2008 08:06

Reply
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 12-04-2008
chebarbudo's Avatar
chebarbudo chebarbudo is offline
Registered User
  
 

Join Date: Nov 2008
Ort: olika
Inlägg: 188
Question Ta bort specialtecken från strängen

Hallå där,
Jag skulle vilja skriva ett skript som tar bort en uppsättning karaktär från varje sträng. Det första argumentet skulle vara sträng, det andra argumentet skulle vara tecken för att ta bort. Till exempel:

Kod:
$ myscript "My name's Santiago. What's yours?" "atu"
My nme's Snigo. Wh's yors?

Jag skrev följande kod:

Kod:
$ cat myscript
ans=$1
for (( i=0; i<${#2}; i++ )); do
    ans=${ans//${2:$i:1}/}
done
echo "$ans"

Men det fungerar inte med följande specialtecken: #% *? \
Finns det något enklare sätt att göra det?
Hur kan jag få det att fungera med alla tecken?

Tack på förhand
Santiago
  #2 (permalänk)  
Old 12-04-2008
Wolfclaw Wolfclaw is offline
Registered User
  
 

Join Date: Aug 2008
Inlägg: 5
Prova att skicka med specialtecken med ett \ framför.
Å andra sidan varför inte bara använda vanliga uttryck med sed eller perl osv?
  #3 (permalänk)  
Old 12-04-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.342
Eller helt enkelt med tr. Kontrollera-d alternativ i manualsidan.

Hälsningar
  #4 (permalänk)  
Old 12-04-2008
chebarbudo's Avatar
chebarbudo chebarbudo is offline
Registered User
  
 

Join Date: Nov 2008
Ort: olika
Inlägg: 188
Citat:
Ursprungligen postat av Franklin52 View Post
Eller helt enkelt med tr. Kontrollera-d alternativ i manualsidan.
Stor! Den enda karaktär som inte fungerar är backslah men här min nya lösningen:

Kod:
~$ cat myscript
echo "$1" | tr -d "${2//\\/\\\\}"
~$ myscript 'weird string !"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' ' !"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~'
            <---------------------- $1 ----------------------> <---------------- $2 ---------------->
weirdstring
~$

Tack så mycket
  #5 (permalänk)  
Old 07-05-2009
summer_cherry summer_cherry is offline Forum Advisor  
Registered User
  
 

Join Date: juni 2007
Plats: Beijing Kina
Inlägg: 1.092

Kod:
echo "My name's Santiago. What's yours?" | tr -d "atu"

  #6 (permalänk)  
Old 12-04-2008
chebarbudo's Avatar
chebarbudo chebarbudo is offline
Registered User
  
 

Join Date: Nov 2008
Ort: olika
Inlägg: 188
Citat:
Ursprungligen postat av Wolfclaw View Post
Prova att skicka med specialtecken med ett \ framför.
Å andra sidan varför inte bara använda vanliga uttryck med sed eller perl osv?
Det är precis vad jag bad! Jag är säker på att det finns ett enklare sätt att göra det ... Men hur?
Jag kan inte passera specialtecken med ett snedstreck eftersom mitt manus läser andra argument karaktär med karaktär. Så om $ 2 är "\ #" kommer skriptet först försöka ersätta \ (och det inte) sedan försöka ersätta # (och den inte alltför).
All annan idé?
  #7 (permalänk)  
Old 12-04-2008
Wolfclaw Wolfclaw is offline
Registered User
  
 

Join Date: Aug 2008
Inlägg: 5
av någon anledning sitt arbete med enkla citationstecken i kommandoraden argument. Jag vet inte varför detta är dock * shrugs *
Reply

Komihåglista

Taggar
shell script, shell scripting, str, UNIX-skript, UNIX scripting basics

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 10:53.


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