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
Behöver du hjälp med att sed-kommando (till en tom rad btw varje block genereras av mönster) frozensmilz Shell-programmering och Skript 2 01-08-2009 12:12
göra flera linje med ett mönster i en enda linje VTAWKVT Shell-programmering och Skript 13 12-04-2008 06:40
Kommentar / ta bort ett visst mönster från andra raden i matchande mönster imas Shell-programmering och Skript 4 10-13-2008 03:37
Skriva ut mönster i linje FK_Daemon Shell-programmering och Skript 3 11-23-2007 04:27
sed - Ersätt Line som innehåller Pattern match med en ny linje kousikan Shell-programmering och Skript 2 03-24-2007 07:24

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 01-05-2009
frozensmilz's Avatar
frozensmilz frozensmilz is offline
Registered User
  
 

Join Date: Aug 2008
Inlägg: 28
Behöver du hjälp med att sed-kommando [tryckning ett mönster + sin linje ingen eller linje inte ensam]

Hej vänner,

Först helt nyligen som jag började lära sed kommandot ... en jag funnit att sed går snabbare att hitta mönster än vissa av mina skript som använder grep kontrollera Patten inuti en fil med post för post sökmetod som är tidskrävande.

Nedanstående script "strMatch" är en av dem som jag använder för att söka efter ett mönster. När mönstret hittas kommer den att visa mönstret och radnumret eller radnumret ensam som visas nedan.

> Input
strMatch Sample.cpp "mönster STRING"
> Output
5: Pattern STRING

> Input
strMatch Sample.cpp "mönster STRING" 2
> Output
5

Många av mina andra skriptet har börjat använda detta script och beroende till skriptet har nästan blivit så komplicerad att den nya skript som använder strMatch direkt eller indirekt används för olika ändamål är långsam i utförandet. Jag har noterat att följande sed Kommandot kan användas för att justera strMatch att öka sökhastigheten ...

sed '/ PATTERN STRING / p' Sample.cpp

Men jag måste få radnumret också gärna mitt tidigare strMatch .... Finns det något sätt att skriva ut produktionen lik nedan

Utgång 1 [Radnummer & pattern]
5 MÖNSTER STRING

Output 2 [Radnummer där mönster hittades]
5

Eftersom vissa av mina skript använder bara dessa radnummer ..... Vänligen hjälp med att göra strMatch script fort .... syftet med strMatch är att söka efter ett mönster och retur mönstret plats eller mönstret tillsammans med den plats ..... Nedan finns faktiskt strMatch script ...

det finns ett särskilt skäl för hantering "inkluderar" sökord ..... jag inte kunnat hitta någon alternativ för "exec" kommando för överföring av filinnehåll till en variabel som sådana (med korrekt anpassning )..... och något sätt varje gång jag söker efter inkludera sökord ... det kommer exec på alla filer i mappen ....... jag tror med sed kommando i wont att kräva "exec",

Tack på förhand ...........
-------------------------------------------------- -----------------------

filter () (
pattern \u003d $ 1
line \u003d $ 2
for x in $ line; do
flag \u003d `echo $ x | grep-c $ mönster`

if [$ flag-eq 1]; sedan
return $ flag
annan
return 0
fi
gjord
)

# filterKeywords () (

#)


pattern \u003d $ 2
exec <$ 1
# fileCont \u003d `rdfil $ 1`
linCnt \u003d 1

exitCnt \u003d `lincnt $ 1`
cnt \u003d 0
count \u003d 0
mode \u003d 3 $
# rdfil $ 1
samtidigt läsa linje, göra

if [ "$ 2" \u003d\u003d "include"]; sedan
quitCon \u003d `echo $ line | grep-c "//-------------------------"`
if [$ quitCon-eq 1]; sedan
räkna \u003d$(($ count + 1))
if [$ count-eq 2]; sedan
bryta
fi
fi
fi

status \u003d `echo $ line | grep-c" $ 2 "`
if [$ status-eq 1]; sedan
fflag \u003d `filter $ mönster $ line"
wcnt \u003d `echo $ fflag | wc-l`
if [$ wcnt \u003d\u003d 1]; sedan
if [$ exitCnt-GE $ cnt]; sedan
if [ "$ mode"! \u003d "2"]; sedan
fall $ läge i
"Num") # RADNUMMER
echo $ linCnt
;;

"FON") # första förekomsten RADNUMMER
echo $ linCnt
exit
;;

"FOLN") # första förekomsten LINE
echo $ line
exit
;;

"LN") # ENDAST LINES
echo $ line
;;

*) # DEFAULT
echo $ linCnt: $ line
;;
ESAC
# echo "Hej"
annan
echo $ linCnt
fi
# filterKeywords $ line
fi
fi
fi
linCnt \u003d$(($ linCnt + 1))

CNT \u003d$(($ CNT + 1))
# echo "---------------------------------------$ cnt $ exitCnt "
gjord

# echo "Hej!"
  #2 (permalänk)  
Old 01-05-2009
Franklin52 Franklin52 is online now Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.345
Har du försökt grep? Detta ger antalet linjen och den linje som avgränsas av ett kolon:


Kod:
grep -n <pattern> <file>

För att få det nummer som du kan göra något liknande:


Kod:
grep -n <pattern> <file>| cut -d: -f1

Kontrollera manualsidan för grep och skuren för det alternativ som används.

Hälsningar
  #3 (permalänk)  
Old 04-29-2009
shivarajM shivarajM is offline
Registered User
  
 

Join Date: april 2009
Inlägg: 12
Arrow Jag behöver bara första utbrottet av mönstret?

Citat:
Ursprungligen postat av Franklin52 View Post
Har du försökt grep? Detta ger antalet linjen och den linje som avgränsas av ett kolon:


Kod:
grep -n <pattern> <file>

För att få det nummer som du kan göra något liknande:


Kod:
grep -n <pattern> <file>| cut -d: -f1

Kontrollera manualsidan för grep och skuren för det alternativ som används.

Hälsningar
Jag behöver bara första utbrottet av matchade mönstret?

hjälpa mig ......
  #4 (permalänk)  
Old 04-29-2009
Franklin52 Franklin52 is online now Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.345
Citat:
Ursprungligen postat av shivarajM View Post
Jag behöver bara första utbrottet av matchade mönstret?

hjälpa mig ......
Har du provat den -m möjlighet grep?
  #5 (permalänk)  
Old 06-28-2009
Shils shils is offline
Registered User
  
 

Join Date: juni 2009
Inlägg: 1
få radnummer med sed-kommandot

Hej,

Om filen är enligt nedan, meddela mig gärna om kommandot har rätt att få likadana nummer som innehåller strängen - jorden med "\u003d" symbol.

Filnamn: example.txt
123 | Jorden | 2009

sed '/ Earth /
(
\u003d
) 'Example.txt
Reply

Komihåglista

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 01:45.


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