Hallo vrienden,
Pas zeer onlangs ben ik begonnen met het leren
sed een opdracht ... Ik vond dat
sed is sneller in het vinden van de patronen dan sommige van mijn scripts die gebruik maakt van grep om de Patten controleren in een bestand met behulp van regel voor regel zoekmethode dat is tijdrovend.
Het onderstaande script "strMatch" is het een van hen die ik gebruik om te zoeken naar een patroon. Wanneer het patroon is gevonden, geeft het patroon en de lijn nummer of de lijn komt alleen zoals hieronder getoond.
> Input
strMatch Sample.cpp "PATTERN string"
> Output
5: Pattern STRING
> Input
strMatch Sample.cpp "PATTERN STRING" 2
> Output
5
Veel van mijn andere script is gestart met het gebruik van dit script en de afhankelijkheid van dit script is bijna complex werd zodanig zijn dat de nieuwe scripts die gebruik maakt van strMatch direct of indirect voor verschillende doeleinden is traag in de uitvoering. Ik heb gemerkt dat de volgende
sed commando kan gebruikt worden om bv. strMatch om de zoeksnelheid ...
sed '/ PATTERN STRING / p' Sample.cpp
Maar ik moet de lijn nummer krijgt ook net als mijn vorige strMatch .... Is er een manier om de output zoals hieronder afdrukken
Uitgang 1 [Regelnummer & pattern]
5 PATTERN STRING
Output 2 [regelnummer waar patroon werd gevonden]
5
Omdat sommige van mijn scripts maakt alleen gebruik van deze lijn nummers ..... Vriendelijk te helpen in het maken van strMatch script snel .... het doel van strMatch is het zoeken naar een patroon en het patroon locatie of het patroon en de plaats ..... Hieronder vindt u de werkelijke strMatch script terugkeer ...
er is een speciaal geval voor de behandeling van "zijn" keyword ..... Ik ben niet in staat om een alternatief te vinden voor "exec" commando om het bestand te inhoud te geven aan een variabele als zodanig (met de juiste uitlijning en )..... wanneer een of andere manier zoek ik ook trefwoord ... het zal exec op alle bestanden in de map ....... en ik denk met
sed commando i wont be vereist "exec",
Thanks in advance ...........


-------------------------------------------------- -----------------------
filter () (
patroon \u003d $ 1
regel \u003d $ 2
for x in $ line; doen
flag \u003d `echo $ x | grep-c $ patroon`
if [$ vlag-eq 1]; dan
return $ vlag
anders
return 0
fi
gedaan
)
# filterKeywords () (
#)
patroon \u003d $ 2
exec <1 dollar
# fileCont \u003d `rdfil $ 1`
linCnt \u003d 1
exitCnt \u003d `lincnt $ 1`
CNT \u003d 0
count \u003d 0
mode \u003d $ 3
# rdfil 1 dollar
terwijl read line; doen
if [ "$ 2" \u003d\u003d "include"], vandaar
quitCon \u003d `echo $ line | grep-c "//-------------------------"`
if [$ quitCon-eq 1]; dan
count \u003d$(($ count + 1))
if [$ count-eq 2], vandaar
pauze
fi
fi
fi
status \u003d `echo $ line | grep-c" $ 2 "`
if [$ status-eq 1]; dan
fflag \u003d `filter $ pattern $ line"
wcnt \u003d `echo $ fflag | wc-l`
if [$ wcnt \u003d\u003d 1], vandaar
if [$ exitCnt-ge $ cnt]; dan
if [ "$ mode"! \u003d "2"], vandaar
case $ mode in
"NUM") # Line Number
echo $ linCnt
;;
"FON") # eerste vermelding Line Number
echo $ linCnt
afrit
;;
"FOLN") # eerste vermelding LINE
echo $ regel
afrit
;;
"LN") # alleen regels
echo $ regel
;;
*) # Standaard
echo $ linCnt: $ line
;;
esac
# echo "Hallo!"
anders
echo $ linCnt
fi
# filterKeywords $ line
fi
fi
fi
linCnt \u003d$(($ linCnt + 1))
cnt \u003d$(($ cnt + 1))
# echo "---------------------------------------$ cnt $ exitCnt "
gedaan
# echo "Bye!"