Hello friends,
Csak a közelmúltban kezdtem tanulás
sed ... egy parancs azt tapasztaltam, hogy
sed gyorsabb megtalálni a szokások, mint az én szkriptet amit használ grep, hogy ellenőrizze a talp belsejében egy fájlt sorról sorra keresési módszer az, ami időigényes.
Az alábbi szkript "strMatch" az egyikük, amit használni lehet keresni egy mintát. Miután a minta megtalálható ez akarat bemutatás a minta és a sor számát, vagy a sor számát, csak az alábbiak szerint.
> Bemeneti
strMatch Sample.cpp "minta STRING"
> Output
5: MINTA STRING
> Bemeneti
strMatch Sample.cpp "minta STRING" 2
> Output
5
Sok más szkript én kezdte el használni ezt a szkriptet, és a függőség, hogy ez a forgatókönyv csaknem olyan bonyolult volt, hogy az új scripteket használó strMatch közvetlenül vagy közvetve Különböző célokra lassú a végrehajtás. Vettem észre, hogy a következő
sed paranccsal lehet a csípés strMatch, hogy növelje a keresési sebesség ...
sed "/ Mintás STRING / p 'Sample.cpp
De én ahhoz, hogy teljes a sor számát is, mint az én előző strMatch .... Van-e bármilyen módon nyomtatni a kimenetet, mint az alábbi
Kimenet 1 [Line száma & minta]
5 mintás STRING
Kimenet 2 [Line száma, ahol mintát találtak]
5
Mert az én szkriptet használja csak ezek a sorok számát ..... Kedvesen segíteni abban, hogy strMatch script gyors .... a strMatch célja az, hogy keressen egy mintát, és visszaküldi a minta helye vagy a minta mellett a hely ..... Az alábbiakban a tényleges strMatch kézírás ...
van egy speciális helyzet kezelésére "magában" kulcsszó ..... nem vagyok képes megtalálni az olyan alternatív "exec" parancs át kell adni a fájl tartalma változó, mint olyan (a megfelelő összehangolás és )..... valahogy valahányszor keressük közé kulcsszó ... majd futtatni az összes a mappában található fájlokat ....... azt hiszem a
sed parancs én szokás lehet szükség "exec",
Thanks in advance ...........


-------------------------------------------------- -----------------------
filter () (
minta \u003d $ 1
line \u003d $ 2
for x in $ line; do
flag \u003d `echo $ x | grep-c $ pattern"
if [$ flag-eq 1], majd
return $ flag
vagy
return 0
fi
kész
)
# 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
míg a sorban olvasni, nem
if [ "$ 2" \u003d\u003d "magában"], majd
quitCon \u003d `echo $ line | grep-c "//-------------------------"`
if [$ quitCon-eq 1], majd
gróf \u003d$(($ count + 1))
if [$ count-eq 2], majd
törés
fi
fi
fi
status \u003d `echo $ sor | grep-c" $ 2 ""
if [$ status-eq 1], majd
fflag filter \u003d `$ pattern $ line"
wcnt \u003d `echo $ fflag | wc-l`
if [$ wcnt \u003d\u003d 1], majd
if [$ exitCnt-ge $ cnt], majd
if [ "$ mode"! \u003d "2"], majd
case $ mód
: "NUM") # LINE NUMBER
echo $ linCnt
;
"FON") # első előfordulása LINE NUMBER
echo $ linCnt
exit
;
: "FOLN") # első előfordulása LINE
echo $ sor
exit
;
"Ln") # Csak LINES
echo $ sor
;
*) # DEFAULT
echo $ linCnt: $ line
;
esac
# echo "Hi"
vagy
echo $ linCnt
fi
# $ line filterKeywords
fi
fi
fi
linCnt \u003d$(($ linCnt + 1))
cnt \u003d$(($ cnt + 1))
"---------------------------------------$ # echo $ cnt exitCnt "
kész
# echo "Viszlát!"