Hallo Freunde,
Erst vor kurzem habe ich das Lernen
sed Befehl ... eine ich festgestellt, dass
sed ist schneller bei der Suche nach den Mustern, als einige meiner Skripte, grep verwendet, um die Muster in einer Datei mit Zeile für Zeile suchen, die Methode ist an der Zeit sein.
Das folgende Skript "strMatch" ist einer von ihnen, die ich bei der Suche nach einem Muster. Sobald das Muster gefunden wird, wird das Muster und die Zeilennummer oder die Zeilennummer allein, wie unten gezeigt.
> Eingabegeräte
strMatch Sample.cpp "PATTERN STRING"
> Leistung
5: PATTERN STRING
> Eingabegeräte
strMatch Sample.cpp "PATTERN STRING" 2
> Leistung
5
Viele meiner anderen Skript hat mit diesem Skript und die Abhängigkeit zu diesem Skript ist fast zu komplex, so dass die neuen Skripte, die strMatch direkt oder indirekt für verschiedene Zwecke ist langsam in der Ausführung. Ich habe festgestellt, dass die folgenden
sed Befehl kann verwendet werden, um tweak strMatch, um die Suche beschleunigen ...
sed '/ PATTERN STRING / p' Sample.cpp
Aber ich brauche, um die Linie, wie auch meine früheren strMatch .... Gibt es eine Möglichkeit, um die Ausgabe wie unten
Ausgabe 1 [Zeilennummer & PATTERN]
PATTERN 5 STRING
Ausgabe 2 [Zeilennummer, wo Muster gefunden wurde]
5
Da einige meiner Skripte verwendet nur diese Zeilennummern ..... Mit freundlicher Unterstützung bei der strMatch Skript schnell .... die Zwecke der strMatch ist die Suche nach einem Muster und gibt die Muster, oder das Muster mit der Lage ..... Hier finden Sie aktuelle strMatch Skript ...
Es ist ein besonderer Fall für den Umgang mit "include" Stichwort ..... Ich bin nicht in der Lage zu finden, eine Alternative für "exec"-Befehl, um die Datei Inhalt einer Variablen als solche (mit der richtigen Ausrichtung und )..... irgendwie, wenn ich nach Stichwort enthalten ... es wird exec auf alle Dateien in den Ordner ....... Ich glaube, mit
sed i-Kommando wird nicht mit "exec",
Vielen Dank im Voraus ...........


-------------------------------------------------- -----------------------
Filter () (
pattern \u003d $ 1
line \u003d $ 2
for x in $ line; tun
flag \u003d `echo $ x | grep-c $ Muster"
if [$ flag-eq 1]; dann
return $ flag
sonst
return 0
fi
getan
)
# 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
while read line; tun
if [ "$ 2" \u003d\u003d "sind"], dann
quitCon \u003d `echo $ line | grep-c "//-------------------------"`
if [$ quitCon-eq 1]; dann
count \u003d$(($ count + 1))
if [$ count-eq 2], dann
Pause
fi
fi
fi
status \u003d `echo $ line | grep-c" $ 2 ""
if [$ status-eq 1]; dann
fflag Filter \u003d "$ Muster $ line"
wcnt \u003d `echo $ fflag | wc-l`
if [$ wcnt \u003d\u003d 1], dann
if [$ exitCnt $ cnt-GE], dann
if [ "$ mode"! \u003d "2"]; dann
case $-Modus in
"NUM") # Zeilennummer
echo $ linCnt
;;
"FON") # erste Auftreten Zeilennummer
echo $ linCnt
Ausfahrt
;;
"FOLN") # erste Auftreten LINE
echo $ line
Ausfahrt
;;
"LN") # nur Zeilen
echo $ line
;;
*) # DEFAULT
echo $ linCnt: $ line
;;
esac
# echo "Hallo"
sonst
echo $ linCnt
fi
# filterKeywords $ line
fi
fi
fi
linCnt \u003d$(($ linCnt + 1))
cnt \u003d$(($ cnt + 1))
# echo $ "---------------------------------------$ cnt exitCnt "
getan
# echo "Bye!"