The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Trenger du hjelp i sed kommandoen (legge en blank linje btw hver blokk generert av mønster) frozensmilz Shell programmering og Skripting 2 01-08-2009 12:12
gjøre flere linje inneholder et mønster i én linje VTAWKVT Shell programmering og Skripting 13 12-04-2008 06:40
kommentar / slette en bestemt mønster fra andre linje i matchende mønster imas Shell programmering og Skripting 4 10-13-2008 03:37
Utskrift ut mønster på linje FK_Daemon Shell programmering og Skripting 3 11-23-2007 04:27
sed - Erstatt Line som inneholder mønsteret samsvarer med en ny linje kousikan Shell programmering og Skripting 2 03-24-2007 07:24

 
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 denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 01-05-2009
frozensmilz's Avatar
frozensmilz frozensmilz is offline
Registrert bruker
  
 

Bli Dato: Aug 2008
Innlegg: 28
Trenger du hjelp i sed kommandoen [utskrift av et mønster + sin linje ingen eller linjen ikke alene]

Hei venner,

Kun kort tid siden begynte jeg å lære sed kommando ... et jeg fant at sed er raskere å finne mønstrene enn noen av mine skript som bruker grep for å sjekke Patten inne i en fil med linje for linje søkemetode som er tidkrevende.

Nedenfor script "strMatch" er en av dem som jeg bruker til å søke etter et mønster. Når mønsteret finnes det vises mønsteret og linjenummer eller linjenummer alene som vist nedenfor.

> Input
strMatch Sample.cpp "MØNSTER STRING"
> Output
5: MØNSTER STRING

> Input
strMatch Sample.cpp "MØNSTER STRING" 2
> Output
5

Mange av mine andre skriptet har begynt å bruke dette skriptet og avhengigheten til dette skriptet har nesten ble sammensatt slik at den nye skript som bruker strMatch direkte eller indirekte til ulike formål er treg i kjøring. Jeg har lagt merke til at følgende sed Kommandoen kan brukes til å finpusse strMatch å øke søke fart ...

sed '/ MØNSTER STRING / p' Sample.cpp

Men jeg trenger for å få linjenummer også gjerne min tidligere strMatch .... Er det noen måte å skrive ut resultatet like nedenfor

Output 1 [Linjenummer & mønster]
5 MØNSTER STRING

Output 2 [Linjenummer hvor mønsteret ble funnet]
5

Fordi noen av mine skript bruker bare disse linjenumre ..... Vennlige hjelpe oss med å gjøre strMatch script fort .... formålet strMatch er å søke etter et mønster og returnere mønsteret plassering eller mønsteret sammen med plasseringen ..... Nedenfor er faktisk strMatch script ...

det er et spesielt tilfelle for håndtering av "include" søkeord ..... jeg ikke kunne finne noe alternativ for "exec-kommandoen til å sende filen innhold til en variabel som sådan (med riktig justering )..... og liksom når jeg søker etter inkludere søkeordet ... det vil exec på alle filene i mappen ....... jeg mener med sed kommando jeg wont være kreve "exec",

Takk på forhånd ...........
-------------------------------------------------- -----------------------

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

if [$ flag-eq 1]; deretter
return $ flag
ellers
return 0
fi
ferdig
)

# filterKeywords () (

#)


mønster \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
mens du leser linje; gjøre

if [ "$ 2" \u003d\u003d "inkluderer"]; da
quitCon \u003d `echo $ line | grep-c "//-------------------------"`
if [$ quitCon-eq 1]; deretter
telle \u003d$(($ count + 1))
if [$ count-eq 2], så
pause
fi
fi
fi

status \u003d `echo $ line | grep-c" $ 2 "`
if [$ status-eq 1]; deretter
fflag \u003d `filter $ mønster $ linje`
wcnt \u003d `echo $ fflag | wc-l`
hvis [wcnt $ \u003d\u003d 1]; deretter
if [$ exitCnt-ge $ cnt]; deretter
if [ "$ mode"! \u003d "2"]; da
case $ modus i
"NUM") # linjenummer
echo $ linCnt
;;

"FON") # første forekomsten linjenummer
echo $ linCnt
exit
;;

"FOLN") # første forekomsten LINE
echo $ line
exit
;;

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

*) # DEFAULT
echo $ linCnt: $ linje
;;
esac
# echo "Hei"
ellers
echo $ linCnt
fi
# filterKeywords $ linje
fi
fi
fi
linCnt \u003d$(($ linCnt + 1))

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

# echo "Bye!"
 

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 02:19.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0